翻訳者が使う基本的な正規表現
正規表現を使った検索
翻訳にしろ校正にしろ、テキストの加工・修正を行う仕事である以上、正規表現(regular expression)を使うと作業が高速化できて役に立つことがあります。
例えば文字列の検索・置換において正規表現を使います(以下は『秀丸エディタ』の例)
検索/置換の際、元々は「正規表現」にチェックが入っていませんが、ここにチェックを入れると正規表現を使った検索が行われます。
ここでは秀丸エディタを例に出していますが、他のエディタでも同じです。
例えばサクラエディタという無料のエディタがありますが、こちらはインストールしなくても使えるので、勤務先のパソコンで使いたいのに管理者権限がなくて秀丸などをインストールできない場合には重宝します。
正規表現は今や常識
正規表現の歴史は古く、数十年前であれば、大学生が必要にかられて自主的に勉強するという程度だったように思います。
オフィス勤務つまりパソコンを使う業種なら、正規表現を知らないなんて言うと恥をかきますが、社会人一年目であれば許されたはずです。
しかし、今は小学生がプログラミングを学ぶ時代なので、知らないなんて言ったら小学生に馬鹿にされることになるかもしれません。
全てを学ぶ必要は無い
翻訳者や編集者など、文章を扱う仕事をしていて正規表現を使えないということは、例えるならば計算機の使い方が分からない営業マンみたいな感じでしょうか。
常に使うわけではない一方で、いざとなった時に使えないと困るような物です。
ただし、プログラマーでもない限り、正規表現を完全にマスターする必要はありません。
基本的な使い方だけ知っておけば、以後は必要になった時点で構文をネットで検索してチェックすればいいからです。
基本が分かっていれば自分で応用できます。
単純な具体例
1つのサンプルとして、単純な例を紹介します。
特許明細書の日英翻訳において、機械翻訳ソフトで翻訳した結果を修正する状況を想定します。
日本の特許明細書の本文を見ると、【0001】、【0002】というように段落番号が付いています。
これは、特許庁がこのように書くように規定しているからです。
今回、クライアントからのガイドラインに、段落番号は削除するように書いてあったと仮定します。
機械翻訳によって、【0001】、【0002】などは自動的に[0001]、[0002]などに変換されたと仮定します。
やりたいこと:
[0001][0002][0003]などを全て削除
これはパターン化された文字列なので、正規表現が役に立ちます。
特定のパターンを検索して、空白で置換すれば削除されます。
そのパターンとはつまり”[半角数字4桁]“ですね。
[や]は、正規表現ではいわゆるメタ文字で、要は決められた意味があります。
[]と書くと、[]の中のどれか1文字という意味になってしまうので、単純に文字として[、]を指定したいなら、これらをエスケープします。
やり方は、前に\(バックスラッシュ/円マーク)を入れるだけなので、それぞれ\[、\]になります。
一方で半角数字1桁は、上の説明に従って[0-9]と書けばOKです。
0から9までの「どれか1文字」という意味です。
ダメな例
OR(または)を意味する|(パイプ)を使って以下のように書くと
\[|[0-9]|\]
これは
[、または半角数字(1桁)、または]
という意味になるため、以下の画面のようにこれを実行すれば、確かに[0001][0002][0003]などが削除されます。
ただし、これだと普通に他の場所で出てくる半角数字まで削除されてしまうのでNGです。
温度とか重さとか特許明細書には数字が頻出しますが、それらが全削除されてしまったら大問題です。
正解
削除したいのは、あくまで上に書いた”[半角数字4桁]”というパターンにあてはまる文字列だけです。
従って、|を使うのはNGで、正しくは
\[[0-9][0-9][0-9][0-9]\]
もう少しスマートに書くなら
\[[0-9]{4}\]
{n}と後ろにつけると、直前のパターンをn回繰り返し、という意味になります。
尚、上の方法で文字列だけを削除すると段落と段落の間にスペースが2行空いてしまいます。
これを修正するには、後で以下のように2個続いている段落を1個に置換すればOKです。
\n
は改行(line feed)を意味します。
ブログランキングに参加しています。
いつも応援クリックありがとうございます。励みになります。
にほんブログ村 英語 通訳・翻訳