MW211 EXIT

devlog
正規表現/促音・長音
2017年09月04日
秀丸エディタの置換にて。

【促音】(右隣の文字に置換)
                            ┌───┬────┐
                            │置換前│(ッ)(.) │
                            ├───┼────┤
                            │置換後│\2\2    │
                            └┬──┴────┘
  ┌───┐      ┌───┐  │  ┌───┐
  │モット│──→│Moッto│─●→│Motto │
  └───┘      └───┘      └───┘

【長音】(左隣の文字に置換)
                            ┌───┬────┐
                            │置換前│(.)(ー) │
                            ├───┼────┤
                            │置換後│\1\1    │
                            └┬──┴────┘
  ┌───┐      ┌───┐  │  ┌───┐
  │サワー│──→│sawaー│─●→│sawaa │
  └───┘      └───┘      └───┘
分類:正規表現
正規表現/日本語
2017年06月14日
正規表現で日本語を洗い出す方法(秀丸エディタにて)。
┌──────────────────────────────────────┐
│[^\x01-\x7E]                                                                │
└──────────────────────────────────────┘
分類:正規表現
正規表現/位置により置換内容が異なる方法
2017年03月03日
┌───┬──────────────────────────────────┐
│置換前│①\t②\t③\t④                                                      │
├───┼──────────────────────────────────┤
│置換後│①(②-③)[④]                                                       │
└───┴──────────────────────────────────┘
上記のような置換を行いたい場合、秀丸エディタなら以下で実現できる。
┌──┬───────────────────────────────────┐
│検索│^([^\t]*)\t([^\t]*)\t([^\t]*)\t(.*)$                                  │
├──┼───────────────────────────────────┤
│置換│\1(\2-\3)[\4]                                                         │
└──┴───────────────────────────────────┘
さて、純粋な正規表現で実現できるものか?
分類:秀丸エディタ、正規表現、【未解決】
正規表現/(行末以外の)$はエスケープ不要
2017年02月23日
行末の「$」は、末尾の時だけ行末の「$」となる。
つまり「$」の後ろに文字を続けると行末の「$」でなくなる。
よって「\$」みたいなエスケープは不要(あってもよいけど)。
例)「abc$efg」の「$e」は、「\$e」でも「$e」でも検索可能

但し、行末の「$」は見分けが付かないのでやっぱりエスケープ必要。
例)「abc$」の「c$」は、「c\$」か「c\$$」か「c$$」かで検索可能
分類:正規表現
正規表現/括弧のネスト
2017年02月11日
括弧の最初から最後まで最短一致検索でヒットさせるには
以下のような正規表現を用いることになる。
┌──────────────────────────────────────┐
│\(.*?\)                                                                     │
└──────────────────────────────────────┘
しかし、ネストしていた場合(「(本日(晴))」みたいやつ)は全部をヒットできない。

一回までのネストなら以下の正規表現でヒットできる。
┌──────────────────────────────────────┐
│\(([^\(^\)]|(\([^\)]*\)))*\)                                                │
└──────────────────────────────────────┘
分類:正規表現
正規表現/入れ子回避
2015年08月16日
「{」の中にある「a」以外の「a」を検索する場合。
┌──────────────────────────────────────┐
│(?<!{[^}]*)a                                                                │
└──────────────────────────────────────┘
分類:正規表現
秀丸マクロ/gettext対応
2015年08月15日
┌────────────────┬─┬────────────────┐
│{$変数|escape}                  │→│{_($変数)|escape}               │
└────────────────┴─┴────────────────┘
Smartyテンプレートで上記の置換を行うマクロ。

まず、手動で直接行う場合。
┌────────────────┬─┬────────────────┐
│{\$([^{]*?)\|escape\}           │→│{_($\1)|escape}                 │
└────────────────┴─┴────────────────┘

これをソースコードにすると以下。
┌──────────────────────────────────────┐
│replaceall "{\\$([^{]*?)\\|escape\\}" , "{_($\\1)|escape}" , regular;       │
└──────────────────────────────────────┘
分類:正規表現
正規表現/区切りもしくは行末まで
2014年07月27日
以下のようなCSVデータがあった場合、
「a」から始まるデータを取得したいとする。
(但し、「a」はデータの途中にはないものとする)
┌──────────────────────────────────────┐
│a123,b123,c123,a321,b321,c321                                               │
│b456,a456,c456,b654,a654,c654                                               │
│c789,b789,a789,c987,b987,a987                                               │
└──────────────────────────────────────┘
よって、「a」から区切りの「,」までかもしくは行末までという条件になる。

正規表現にすると以下のような感じになる。
┌──────────────────────────────────────┐
│a.*?(?=(,|$))                                                               │
└──────────────────────────────────────┘
分類:正規表現
正規表現/行末が特定の文字でないもの
2014年02月23日
秀丸エディタで、行末が「a」という文字で終わらないものをヒットするには?
┌──────────────────────────────────────┐
│[^a]$                                                                       │
└──────────────────────────────────────┘

で、こいつでgrepすれば、その行のみ抽出…と思ったら、
ほぼ全ての行がヒットしてしまった。

もう一度元に戻って、前出の正規表現で検索していくと…。
そう、気にしていなかったが、「a」という文字で終わっている行も
微妙にその末尾(改行コード?)がヒットしているのだ。

よって、grepすればこの行もヒットしてしまうということだ。

じゃ、望む通りに抽出するには、どうすればいいのか?
こうする。
┌──────────────────────────────────────┐
│^(?!.*a$).*$                                                                │
└──────────────────────────────────────┘
むむむ、難しい。
後読みを上手いこと駆使するってことだ。
分類:正規表現
CSS/「;」漏れ対策正規表現
2014年02月22日
CSSで末尾の「;」を忘れると結構厄介だ。

例えばこんな感じ。
┌──────────────────────────────────────┐
│div#main {                                                                  │
│    top                 :0     /* ←「;」が漏れている */                    │
│    height              :1em;  /* ←効かない          */                    │
└──────────────────────────────────────┘
後続の指定が効かなくなってしまう。

ということで、そういうのをみつける正規表現。
┌──────────────────────────────────────┐
│:[^;]*$                                                                     │
└──────────────────────────────────────┘
「:」で始まって、「;」がないまま終わっている行を抽出してくれる。

もちろん、二行に渡って書いたりしたら抽出されてしまうし、
「a:link」みたいなのも抽出されてしまう。
ま、そこはご愛嬌(そんなに多くないはず個別に判断して)ということで。
分類:CSS、正規表現
前へ 1 2 3 次へ