# 翻訳者のための正規表現~勉強会の解説、その4
前回のお題解説で、最後に
数字の全角/半角置換となると、これはマクロの領域
と書きました。
このシリーズでは、(少なくともまだ)マクロの話まで踏み込むことはしませんが、実は最新の秀丸エディタがこの置換に対応しているので、そのことに少しだけ触れておきます。
全角から半角、または半角から全角という置換をふつうではできない、というのは想像していただけると思います。
[0-9]
[0-9]
という検索はできても、ヒットした箇所について、たとえば
半角の8→全角の8
とか
全角の5→半角の5
という対応を置換だけでは判断できないからです。
マクロには tohankaku とか tozenkaku なんていうコマンドがあるので、わりと簡単に書けてしまいます。それから、秀丸マクロには「変換モジュール」という機能があって---デフォルトのままだとメニューからは選べないかもしれません---、その中に半角置換/全角置換があるので、たとえば文字列を選んでその機能を使うこともできます。
でも、今回やっているような置換ダイアログでは指定できません。いえ、これまではできませんでした。
で、前回も書いたように、勉強会の準備をしていたら、Ver.8.20以降でこの置換が可能になっています。
簡単に言うと、上に書いた「変換モジュール」の機能を正規表現の中で呼び出す、という荒技を実装したようです。
詳しくは、秀丸エディタのヘルプを起動して、目次ツリーから
[目次]-[ 検索系コマンド]-[正規表現]-[置換の時の、変換モジュールによる変換の指定 ]
を見てください。
これを使うと、前回のお題は最終的にこうなります。
【検索その5 ~本当の最終形】
[0-90-9]+\f ?\f[((]\f.+?\f[))]
【置換】
\(0,ToHankakuAlnum) \(\3\)
【解説】
前回の最終形では、置換文字列が
\0 \(\3\)
なっていました。\0 指定しているだけなので、ヒットした数字の部分をそのままに引き継ぐだけでした。
その \0 を \(0,ToHankakuAlnum) にします。
ToHankakuAlnum というのが、「すべての数字を全角にする」という意味を持つ部分です。
ただし、これはあくまでも秀丸エディタ独自の正規表現であり、汎用性はありません。
この記事へのコメントは終了しました。
コメント