文書を作成し、上司などに提出する際には、「2008年11月29日 土曜日」と日時や曜日を表題周辺に挿入する場合も多いでしょう。テキストエディタの機能やIMEの変換機能として用意されていることの多い日時挿入機能ですが、たいていはカスタマイズ機能を備えているものの、いざ文書を作成するという際に、いちいちカスタマイズしなければならないのは煩雑な印象を覚えることでしょう。まずはこの日時に含まれる「曜日」を省略し、「(土)」とする正規表現を試してみましょう。
"曜日"を変換するには?
これまでの記事をご覧になって頂いた方なら簡単に想定できるように、「月曜日」「火曜日」とターゲットには必ず「曜日」が付いています。これだけを削除するなら、検索文字列を「曜日」、置換文字列をなしにするだけですが、結果は「2008年11月29日 土」と見栄えの良くないものになってしまいます。
この場合はキャレットを使用し、置換文字列として「\f[日月火水木金土]\f曜日」、置換文字列を「(\1)」としてみましょう。これで、「土曜日」は「(土)」と置換されましたが、文書中の「~曜日」も置換されてしまいました(図1~2)。
では、表題周りにある曜日と文書中の曜日が異なる条件を考えてみましょう。筆者が用意したサンプルでは「2008年11月29日 土曜日」と改行されていることに注目してください。行末を示すメタ文字は「$(ドル記号)」ですので、先の表現にドル文字を追加した「\f[日月火水木金土]\f曜日$」を検索文字列で使用すれば、表題周りの曜日だけ置換されます(図3~4)。
今度は曜日の後に時間など文字列が挿入されている場合を想定しましょう。こちらは少々面倒です。先のドル文字が使えないのはもちろん、「~ 10時10分」と全角スペースで区切られる場合や「~ 10:10」と半角スペースで区切られつつ時間表記がセミコロンで省略されている場合もあります。同時に文書中に含まれる状態を考えますと、「土曜日 」という表記は箇条書きならともかく、文書中に使われることはあまり多くありません。
つまり前後に全角もしくは半角スペースがあることを検索条件にした方が良い、ということになります。以前の記事で紹介した「文書に含まれる全角文字の前後を『★』で囲む」を応用しましょう。
前方は「[ ]」と全角もしくは半角スペースを指定し、後方はすべての全角文字を除外するため、「、」から「??」まで囲み、否定を意味する「^(キャレット)」を付けた「[、-??]」と指定しましょう(ユニコードの場合はバックナンバーをご参照ください)。
正規表現
検索:[ ]\f[日月火水木金土]\f曜日[^、-??]
置換:($1)
まとめると上記のようになります。置換文字列は全角のパーレンで囲んだ「($1)」としていますが、半角のパーレンで曜日を囲む場合は「($1)」、半角スペースを前後に付ける場合は「 ($1) 」とそのまま指定してください(図5~6)。
阿久津良和(Cactus)