2011-05-14 12 views
7

私は、PDFからHTMLへのOCR変換を行ったドキュメントをいくつか持っています。そのため、コンバーターがうんざりになる(つまり、エリプスなど)、無作為なユニコードの句読点がたくさんあります。彼らはまた正しく非英語の束を持っていますが、éやロシア語の文字のようなアルファベットの文字もあります。Unicode非アルファベット文字に一致する方法はありますか?

ユニコードのアルファベット文字に一致する正規表現を作る方法はありますか?どんな言語でも)?または、アルファベット以外の文字にのみ一致するものはありますか?いずれかが本当に有益ですばらしいでしょう。 Perlを使用しています。ありがとう!

答えて

19

ユニコード文字のプロパティ:http://www.regular-expressions.info/unicode.html#propを確認してください。あなたが探しているものは、おそらく、おそらく文字または表意文字と一致するでしょう。

\p{L} 

また、あなたはどのような場合には

\p{L}\p{M}* 

を行うことができますので、それらの上にマーク付きの文字を含めることができ、文字プロパティのすべての異なるタイプが最初のリンクで詳述されています。

編集:\ wがユニコード文字と一致するかどうかを議論するこのスタックオーバーフローの答えを見ることもできます。 Does \w match all alphanumeric characters defined in the Unicode standard?

+2

同様に、 '\ P'を使用して、特定のプロパティを持つ文字* not *と一致させることができます(' \ P {L} 'は文字以外の文字と一致します)。 –

+0

いくつかのコードポイントを省略した文字コードを使用できますか? \ p {P}のようにピリオドやカンマを省略しますか?その否定は私にとって完璧なものになるでしょう。 – Eli

2

使用している言語によっては、正規表現エンジンがUnicode対応である場合もありますが、そうでない場合もあります。そうであれば、\p{}のプロパティトークンを知っているかも知れません。そうであれば、答えはUnicode Characters and Properties in Jan Goyvaerts' regex tutorialです。

サポートされている場合は、\p{Latin}を使用して、Unicode Latinブロックのいずれかを使用する言語からのもの(またはそうでないもの)をすべて検出できます。

関連する問題