# 翻訳者のための正規表現~置換その1
シリーズ、かなり間が空いてしまいました。
前回までで、検索の基本パターンはひととおりご紹介しました。次は、翻訳者にとって実際に活用する場面が多い
置換
に進もうと思っていたのですが、置換の話をどこから始めたらいいか、ずっと悩んでいたというのも間が空いた理由のひとつです。
いきなり難しくなるかもしれませんが、実用本意で始めてみることにします。
基本その2で、実用パターンとしてこれを挙げました。
行な[わいうえおっ]
送りがなに「な」を含む動詞「おこなう」の、すべての活用形を検索するパターンです。
では、このすべての出現箇所について
「な」を削除して、「行わ、行い、行う、行え、行お、行っ」にしたい
場合、どんな置換を指定すればいいのでしょうか。
今までの基本知識を総動員すれば、
となりそうですが、これは失敗します。自分で試してみてください。
正規表現を使う置換で多くの人がつまずくポイントのひとつは、ここなんではないかな、と実はひそかに思っています。つまり、正規表現の指定パターンが、
検索文字列と置換文字列で同じではない
というその1点です。
上の例で言うと、
行な[わいうえおっ]
のカッコ内は「わ、い、う、え、お、っ」のいずれか、というだけで、つまり順序はありません。だから、置換文字列に
行[わいうえおっ]
と指定しても、順序が決まっていない以上、勝手に置換するわけにはいかないのです。
ではどうするかというと、
検索文字列のなかで、置換する部分と、そのままにしておく部分を切り分ける
という発想をします。つまり、上の例であれば、
行な[わいうえおっ]
のなかで、
行な → 行
の部分は置換するが、送りがなに当たる
[わいうえおっ]
の部分は置換せずそのまま残す、わけです。
そうすると、必要になるのは
検索文字列をパートに切り分け、その各パートを置換文字列のなかでA、B...のように参照する
ことです。わかりにくいと思いますが、続けます。
秀丸エディタの正規表現の場合、パートの切り分けに使うのが
¥f
という記号です(半角の円記号と半角のf)。上の例であれば、
行な¥f[わいうえおっ]
と指定します。これで、検索文字列は 行な と [わいうえおっ] の2パートに区切られました。
そして、¥fで区切られた各パートを、置換文字列のなかでは
¥0、¥1、¥2...
で表します(半角の円記号と半角数字)。0で始まるところがちょっとイヤンかもしれませんが、
行な = ¥0
[わいうえおっ] = ¥1
と対応することになります。そこで、
¥0 のパート → 行 だけに置換する
¥1 のパート → そのまま残す
という置換を指定すればいいことになります。実際のダイアログでは、
こうなります。赤下線のバートが
行な = ¥0 → 行
青下線のパートが
[わいうえおっ] = ¥1 → そのまま
ということになるのですが、わかっていただけたでしょうか。
■
ただし、今回ご紹介したのは秀丸エディタに固有の指定方法であり、Perl などでも使える汎用性の高い指定方法は別にあります。ただ、この指定方法はわりと直感的かなーと個人的に思っているので、ひとまずそれを紹介しました(というか、しばらく前のバージョンの秀丸エディタでは、これしか使えなかった)。
【今回のまとめ】
●検索文字列と置換文字列で正規表現の指定は同じではない
●[a-z] や (エディタ|エディター) などを検索文字列には指定できない
●検索文字列をパートに区切る記号は ¥f
●¥f で区切った各パートは ¥0、¥1、¥2... で参照する
【すぐに使える実用的なパターン】
検索文字列:[0-9a-zA-Z]\f ¥f [ァ-ヶーぁ-ん亜-熙]
置換文字列:¥0¥2
……半角文字と全角文字の間の半角スペースを削除
※解説が必要かもしれません。次回で解説します。
この記事へのコメントは終了しました。
コメント