秀丸の正規表現置換
秀丸の置換って、\& とか書いても、元の文字列を取り出すことが出来ない。
微妙に不親切だよなぁとか思ってたけど、実はあったらしい。
秀丸のヘルプを読んでみると、ちゃんと書いてた。
●区切り記号の入れ方
検索元文字列の中から取り出したい部分がある時に、その部分の両側を「\f」で区切ってください。取り出したい部分が検索文字列の先頭である場合には、先頭には\fは要りません。同様に最後の場合も\fは要りません。
例えば「今日は晴れです」や「今日は雨です」などの文章の「晴れ」や「雨」の部分を取り出したい場合には、
今日は\f.+\fです
と指定すればいいです。ちなみにこの場合、
今日は晴れです。明日も晴れです。
という文章があると、「.+」の部分には「晴れです。明日も晴れ」がヒットしてしまいます。こういうことを避けるためには、
今日は\f(晴れ|雨)\fです
と表現するか、または
今日は\f.?.?\fです
と、\fの間の部分が2文字以下でしかヒットしないようにするなどの工夫が必要です。
●検索元文字列の取り出し
先ほどの例の場合だと、「今日は」の部分が\0、次の区切り部分が\1、次の「です」の部分が\2で取り出すことができます。必要なのは\1なので置換文字列の方で、例えば
明日も\1です
とすれば、検索元文字列の中の「晴れ」や「雨」の部分を置換文字列の中で使うことができます。
ということは、例えば行単位のコメント、例えば、
// これはコメントです
このコメントを、
<span class="line_comment">// これはコメントです</span>
って置換しようと思ったら、
検索: \/\/\f.*\f$ 置換: <span class="line_comment">//\1</span>
ってやればいいのか。秀丸すげぇ……。