[5258]
RE: タグ付き正規表現
すい
>サクラだと(というかBREGEXP.DLL?)だと\fは使えないようでした。
正規表現タグで「\f で区切る」なんていう滅茶苦茶ヘンテコな記述を
するのは秀丸くらいではないかと。 (;^^A
世の中の一般的な正規表現が使えるユーティリティでは、
「何らかの括弧で括る」というのが一般的です。
\(~\) とか {~} とか...
括弧の種類がユーティリティ毎にまちまちです。
で、サクラエディタで使用されている BREGEXP.DLL は perl という
ユーティリティと ほぼ互換の正規表現で、タグは (~) で括る事に
なっています。
(~) で括られた範囲の検索語にマッチした文字列が、先頭の括弧から順に
・検索文字列中 :\1 , \2 , \3 , ...
・置換後文字列中:$1 , $2 , $3 , ...
に入ります。
例えば、検索文字列が「(.*)\t(.*)\t\2\t\1」ならば
## 「→ 」がタブとする。
ABC→ DEF→ DEF→ ABC
のような文字列を検索する事が出来ます。
また、(~) 表記部分は、一塊の文字列として取り扱えます。
例えば「([0-9A-F]{4}\t){2}」とか。
{2} の「2回」の表記は、その前の一塊「([0-9A-F]{4}\t)」
にかかります。つまり「[0-9A-F]{4}\t[0-9A-F]{4}\t」という表記と
等価です。
もちろん括弧を入れ子にする事も可能なわけで、「(([0-9A-F]{4}\t){2})」
とすれば、「([0-9A-F]{4}\t){2}」にマッチした文字列部分が \1 に
入るわよ、と。
# こういう表記が秀丸の \f では無理かな。
なお、置換する場合には置換後文字列中では \1 , \2 , \3 ,... ではなく、
$1 , $2 , $3 を使うという事に注意。この辺がちょっと嫌らしい所
なのですが。
置換後文字列に \1 , \2 , \3 を使っても、大抵は それっぽく
動作しますが、perl では稀に \1 , \2 ,... では駄目なパターンも
あるらしいので、置換後文字列中では $1 , $2 の表記を使用するように
した方が無難かと。
他、置換後文字列中では $& が「検索にマッチした文字列全体」と
なります。
・置換前:(([0-9A-F]{4}\t){2})
・置換後:$1 だわさ
のような置換の場合、検索文字列全体をわざわざ (~) で括らなくても $& を使って
・置換前:([0-9A-F]{4}\t){2}
・置換後:$& だわさ
で OK という事で。
他、まだまだ色々なメタ文字とかがありますが、詳しい事は perl の
正規表現を調べるとよろしいのではないかと。