CATツールで使える正規表現・第1回
正規表現(regular expression)をご存知でしょうか。正規表現は、特定のパターンに当てはまる(マッチする)文字列を検索するためによく用いられます。たとえば-?([0-9]*\.)?[0-9]+という正規表現で検索すると、正または負の整数または小数を検索できます。この例のように、正規表現はときに暗号のように見えることもありますが、使いこなすことができれば、これほど便利なものはありません。
コンピュータープログラムの多くで正規表現を利用することができ、memoQやSDL Trados StudioのようなCATツール※も例外ではありません。これらのCATツールでは、原文や訳文を対象に正規表現で検索できることはもちろん、ファイルの読み込み時に、指定した正規表現で文節を分割したり、正規表現にマッチする文字列を翻訳対象外にしたりすることもできます。
※ CATツールとは、翻訳支援(Computer Assisted Translation)ツールの略称で、翻訳メモリや用語集を使って翻訳業務を効率化するためのツールを指します
この連載では、翻訳の現場で役に立つ正規表現を取り上げながら、基本的な正規表現について解説したいと思います。上記の「正または負の整数または小数」を表す正規表現も、次回以降の記事で解説します。
目次[非表示]
メタ文字と通常の文字
最初の例として、原文や訳文の中から「<b>」や「<a href=”index.html”>」のようなHTMLタグを検索したいとしましょう。
HTMLタグは必ず「<」で始まります。正規表現で「<」を検索するには、そう、<と書きます。正規表現では、「. ^ $ ? * + ( ) { } [ ] | \」の14個のメタ文字(metacharacter)を除いて、文字はその文字にマッチします。メタ文字が何にマッチするかというのは、この連載の中で追々説明します。
なお、メタ文字の前に「\」をつけると、メタ文字はその機能を失い、通常の文字と同じように、その文字自身にマッチするようになります。たとえば「.」を検索したいときは\.と書きます。「\」自身もメタ文字ですから、「\」を検索したいときは、もちろん\\です。
なんでもいいから1文字「.」
HTMLタグは、「<」で始まって、いろいろな文字があって、「>」で終わります。この「いろいろな文字」を表すには、任意の1文字を表すメタ文字「.」が使えます。
.は、アルファベットでも数字でも漢字でもひらがなでも記号でも、どんな文字にでもマッチします。ただし、通常は改行文字にはマッチしません。
したがって、<.>という正規表現は、「<b>」や「<p>」などにマッチします。しかし、「</b>」や「<a href=”index.html”>」にはマッチしません。「.」が1文字にしかマッチしないためです。
1文字以上いくつでも「+」
1文字以上の任意の文字にマッチさせるには、メタ文字「+」を使用します。「+」は、直前の文字(またはグループ)の1回以上の繰り返しを表します。たとえば《ゴー+ル》は「ゴール」「ゴーール」「ゴーーール」などにマッチします。
これを使って<.+>とすれば、「<」で始まり、任意の文字が1文字以上続いて、「>」で終わる文字列にマッチします。
では、さっそく、「今日は<a href=”hare”>晴れ</a>です。」という文に対して<.+>で検索してみましょう。「<a href=”hare”>」と「</a>」がマッチすると思いきや、「<a href=”hare”>晴れ</a>」がマッチしてしまいます。これはどうしたことでしょう。
貪欲と怠惰
正規表現では、「+」のような繰り返しは、なるべく長い文字列にマッチしようとします。これを「貪欲な(greedy)」マッチまたは最長一致と言います。
<.+>の場合、最初の「<」を見つけるとマッチが始まりますが、そのあとは任意の文字をなるべくたくさん見つけようとします。「>」を見つけても、「>」も任意の文字に違いありませんので、止まらずに検索を続け、いよいよ行末までたどり着いて任意の文字がなくなったところで、そこから戻って最初に出現する「>」をマッチの終わりとします。
したがって、<.+>という正規表現で検索すると、最初の「<」から最後の「>」までにマッチします。その途中に「<」や「>」がいくつあってもおかまいなしです。
では、逆に、なるべく短い文字列にマッチさせるにはどうすればよいでしょう。そのためには、「+」のあとに「?」を続けて<.+?>とします。こうすると、「<」と任意の1文字が出現したのち、最初に出現する「>」でマッチが終わります。これを「怠惰な(lazy)」マッチまたは最短一致と言います。
もう一度「今日は<a href=”hare”>晴れ</a>です。」という文に対して、<.+?>という正規表現で検索してみましょう。めでたく「<a href=”hare”>」と「</a>」がマッチします。
今回のまとめと次回の予告
今回は、HTMLタグを検索するため、任意の1文字を表す「.」と1回以上の繰り返しを表す「+」を使って<.+?>という正規表現を作りました。
この正規表現は、確かにHTMLタグにマッチしますが、それ以外の文字列にもマッチすることがあります。たとえば、「x < y or x > y」という文があると、その中の「< y or x >」にマッチしてしまいます。
そこで、次回は、HTMLタグを検索するための、より精度の高い正規表現を考えてみましょう。
連載記事の続きはこちら
|
川村インターナショナルの翻訳サービス
機械翻訳を最大限に活かして翻訳を行う「ポストエディット(PE)」による翻訳サービスの需要が高まっています。ポストエディット (Post Editing) とは、スピードとコスト重視の機械翻訳だけでは品質が不十分なケースで、人手による後編集を適用して、お客様が求める翻訳に仕上げるサービスです。すべてのコンテンツ、文書に対してポストエディットが適しているわけではありませんが、ローカリゼーションを中心にマーケティング翻訳、マスメディア翻訳などはポストエディットに向いている文書と言えます。また機械翻訳エンジンの進化、変化に伴い、ポストエディターに求められる能力も徐々に変わってきています。今後も機械翻訳とポストエディットの動向に目が離せません。
川村インターナショナルでは、今までに経験したポストエディット案件量と作業者の数が違います。英語と日本語のペアに限定せず、英語から欧州言語など、ネイティブの言語を話すポストエディターを確保できるのも弊社の強みです。お客様が抱えるあらゆる問題について、多様なご提案をさせていただきます。お気軽にお問い合わせください。
関連記事