2010年10月5日火曜日

翻訳者と校正者のための正規表現 (11) - 常識的な文字以外の検出

いい加減、すぐに使用できる実用的なものを提示しないと、投稿末尾のダジャレしか読んでくれなくなりそうですw

今回は、以下の .NET 表現を使用します。なので TagEditor とかの .NET ベース向けです。

  • IsBasicLatin (基本ラテン文字)
  • IsCJKUnifiedIdeographs (CJK 統合表意文字 (漢字))
  • IsHiragana (ひらがな)
  • IsKatakana (カタカナ)
  • IsCJKSymbolsandPunctuation (CJK 句読点)
この 5 つで、日本語の文章はほとんどカバーされます。というわけで、これらをクラスにまとめて否定形を作成すればよいのです。


[^\p{IsBasicLatin}\p{IsCJKUnifiedIdeographs}\p{IsHiragana}\p{IsKatakana}\p{IsCJKSymbolsandPunctuation}]

これで作業しても良いのですが、IsHalfwidthandFullwidthForms (半角カタカナ全角英数記号) が含まれていないので、割とよく許容される全角丸括弧がありません。なので文字クラスに加えてみます。他にも許容できる文字があったら、任意に加えていきます。


[^\p{IsBasicLatin}\p{IsCJKUnifiedIdeographs}\p{IsHiragana}\p{IsKatakana}\p{IsCJKSymbolsandPunctuation}()]

これで、常識的な文字以外はすべて検出されるはずです。Wikipedia の文章で試してみましょう (末尾に通常使用しない文字を追加しています)。


はい、無事に「通常使用しない文字」だけ検出されました。

英日の翻訳であれば、これをベースに改造するなり、別の正規表現を追加するなりして発展させるとよいでしょう。日本語以外への翻訳者は MSDNWiktionary で文字範囲を確認して工夫してください。

これからは、実用的なものをポツポツ書いていくつもりですこんぶうま。

0 件のコメント: