今回は、以下の .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 の文章で試してみましょう (末尾に通常使用しない文字を追加しています)。
はい、無事に「通常使用しない文字」だけ検出されました。
英日の翻訳であれば、これをベースに改造するなり、別の正規表現を追加するなりして発展させるとよいでしょう。日本語以外への翻訳者は MSDN や Wiktionary で文字範囲を確認して工夫してください。
これからは、実用的なものをポツポツ書いていくつもりですこんぶうま。
0 件のコメント:
コメントを投稿