2010年10月11日月曜日

翻訳者と校正者のための正規表現 (12) - 空白検出のベース

前回は、正規表現を構築する際に最初に設定するべき正規表現を書きました。次に設定するのはスペースの検出でしょう。

以前から、正規表現の基本の説明に絡めて、スペース (正確には空白文字) の検出をしてきましたが、実務でベースとして使用する場合に適切と思われる正規表現を次に示します (折り返されていますが 1 行の表現です)。

(\p{IsCJKUnifiedIdeographs}|\p{IsHiragana}|\p{IsKatakana}|\p{IsCJKSymbolsandPunctuation})\s+(\p{IsCJKUnifiedIdeographs}|\p{IsHiragana}|\p{IsKatakana}|\p{IsCJKSymbolsandPunctuation})

はい、これで漢字、ひらがな、カタカナ、句読点の間の不要なスペースをすべて検出できます。IsBasicLatin が含まれていないのは、もちろん英数文字間や英数字と和文の空白を許容するためです。.NET 系以外のソフトウェァでは、[ぁーん] や文字コードに置き換える必要があります。


カタカナ間のスペースを許容する場合 (ダイアログ ボックスなど) は、上記から IsKatakana を取り去り、Terminology Verifier などの英和ペア方式の検出に任せます。カタカナの部分が少しなら、検出されるままにして自分の目で確認するのもよいでしょう。

前回の (11) の表現とこの (12) の表現は、広いジャンルでベースとして使用できると思います。あとは、クライアントさんごとに工夫していくだけです。

そろそろ書くことがなくなってきました。正規表現エンジンがいくつかあるので混乱しやすいのですが、覚えることは結構少なくて、あとは応用です。

とりあえず、今までの記事をまとめたページを近々作成しようと考えています。次回以降の記事は未定です。何か思いついたら書いてみたいと思います。「これを検出したい」というコメントをいただけたら、できるだけ回答していきたいと思います。

(・∀・)シゴトクレ♪ ヒマダシャンティ*・゜゚・*:.。. .。.:*・゜゚・*

2 件のコメント:

ヨシダヒロコ さんのコメント...

最後の一行、ものすごく共感w

sagtran さんのコメント...

妙なところに深く共感w