2010年10月2日土曜日

翻訳者と校正者のための正規表現 (9) - 正規表現の種類など

いままで [ぁ-ん] とか正規表現で喘ぎ声をあげてきたわけですが、コードや名前ブロックを知っているとカッコよく記述できたりします。

ですが、そのエディタが、どの正規表現エンジンを使用しているか、どの開発言語を使用しているかで使用できる表現が異なります。なんとなく知っているだけで、以下の種類があります。

POSIX 系
AWK 系
Pearl 系
独自実装系

Web で見つけた「おおっ!」という正規表現が、自分のエディタでは使用できなくて (´・ω・`)ショボーン したりしますが、これらが一因となっていると思います。開発言語や、何に準拠しているかを公表していないエディタだと、いろいろ試してみるしかありません。逆に、何に準拠しているかが判明したら、今までできなかった表現ができるかもしれません。

-----

ところで、Microsoft 社の .NET Framework で開発されたエディタでは、文字コードの範囲ごとに名前が付けられています。「サポートされている名前付きブロック」 (MSDN リンク) を参照してください。

.NET Framework を利用した正規表現プログラムであれば、文字を記述する代わりに、これらの表現を使用できるはずです。

SDL Trados のサポートの人も知らないかもしれませんが、Trados TagEditor の正規表現エンジンでは .NET Framework の「名前付きブロック」を使用できます。ライブラリをパクっただけ、もとい有効活用したのでしょうね。下記のような表現が使用できます。

\p{IsBasicLatin}

これは、すべての基本ラテン文字 (pdf リンク) を検出する記述です。\p は右の名前ブロックに含まれる文字列を検出するという意味です。P を大文字にして \P とすると、右の名前ブロックに含まれない文字列を検出します。英訳が多く、訳文に半角英数記号しか許されない人には、下記の表現が便利かもしれませんね。

\P{IsBasicLatin}

TagEditor の QA Checker 内で、IsBasicLatin の範囲を、あえて文字コードで書く場合は次のようになります。

[\u0000-\u007F]

いくつかのエディタ (VxEditor など) では、次のように「x」を使用して記述する必要があります。ちなみに、VxEditor では、AWK 互換と Pearl 互換の正規表現エンジンから選択できます。

[\x0000-\x007F]

まぁ、[ぁ-ん] とかの実体記述の方が後でわかりやすくて便利という見方もありますね。

-----

最後に、.NET 系列で使用できる文字ブロックをいくつか挙げておきます。

IsHiragana
ひらがな全部

IsKatakana
カタカナ全部

IsHalfwidthandFullwidthForms
半角カタカナ、全角英数などのマイノリティ~

IsEnclosedCJKLettersandMonths
①、㈱ などの括弧や丸で囲まれた文字

他にも便利なものがありますので、さっきの MSDN のリンクで調べてみてください。

-----

今日はこんな感じで終わりますよっちゃんて言えば「イカ」! 「野村」ではない。

0 件のコメント: