秀丸の正規表現置換

秀丸の置換って、\& とか書いても、元の文字列を取り出すことが出来ない。
微妙に不親切だよなぁとか思ってたけど、実はあったらしい。


秀丸のヘルプを読んでみると、ちゃんと書いてた。

●区切り記号の入れ方
検索元文字列の中から取り出したい部分がある時に、その部分の両側を「\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>

ってやればいいのか。秀丸すげぇ……。