今度は条件付けを用いた置換を行なってみましょう。正規表現の検索文字列を「^1」に変更すると、行頭の先頭文字が「1」となっている文字列のみにマッチするため、2行目の行頭には「・」が追加されていないのが確認できます。「1章」「1節」など異なる見出しがある場合にご活用ください。このとき注意しなければならないのが、置換文字が「・」だけではなく「1」も置換対象となってしまう点。かならず置換文字列も「・01」などマッチさせる文字列を加えてください。

正規表現

検索:^1
置換:・01

Before

1 中原 中也
2 夏目 漱石
3 南部 修太郎

After

・01 中原 中也
2 夏目 漱石
3 南部 修太郎

最後にタグ付き正規表現を用いてみましょう。前述のように正規表現はアプリケーションなどによって独自拡張されており、マッチした文字列を一度メモリ内に取り込み、置換文字列などに用いることが可能です。PerlやPHPでは一般的に使われている正規表現機能ですが、秀丸ではタグ付き正規表現として実装されました。

多くのプログラミング言語では「() (パーレン)」で囲んだ文字列が対象となりますが、秀丸では独自にエスケープシーケンスを拡張し、「\f」で囲んだ文字列が対象となります。下記の例では「行頭から改行を除く任意の1文字、『.』と文字列が続く行」にマッチし、「『第』に続いて『\f』で囲んだ文字列、その後に全角スペース」へと置換されました。

正規表現

検索:^\f.\f\.
置換:第\1□

※「□」は全角スペース

Before

1.中原 中也
2.夏目 漱石
3.南部 修太郎

After

第1 中原 中也
第2 夏目 漱石
第3 南部 修太郎

今回はキャレットの話に従事する予定でしたが、任意の文字にマッチするメタ文字「.(ピリオド)」まで広がってしまいました。任意の文字列にマッチするメタ文字に関する説明は、また機会を改めてご紹介します。

阿久津良和(Cactus)