2016-07-24 11 views
2

を除くすべての非文字:http://www.regular-expressions.info/unicode.html#category次の正規表現で文字と一致する方法についていくつかのヒントを与える:正規表現マッチ、私はこの素晴らしいガイドを発見した特殊記号(パイソン)

\P{L} 

をしかし、この正規表現は、検討しますが非文字もàとしてU + 0061 U + 0300(私がよく理解していれば)としてコード化されています。 Pythonで次のコードをregexモジュールを使用して、例えば :

all_letter_doc = regex.sub(r'\P{L}', ' ', doc) 

ガイドでpur

purèを変えていくには、以下ですべての文字に一致する方法を提供すること

\p{L}\p{M}*+ 

と実際には私はそれを否定する必要があるが、それを得る方法は分からない。

+0

'ur '\ P {L}''を試して、 'u '''と置き換えてください。文字と発音区別記号以外のすべての文字をスペースで置き換える場合は、 '[^ \ p {L} \ p {M}] +'正規表現 –

+0

が必要です。受け入れてください。ありがとうございました! – Sanandrea

+0

Python 2.xを使用していますか? –

答えて

4

Python 2.xを使用しているため、r'\P{L}'はバイト文字列ですが、入力はUnicodeです。パターンをUnicode文字列にする必要があります。参照してくださいPyPi regex reference

ASCIILOCALEUNICODEフラグも指定されていない場合は、バイト文字列だ場合、正規表現パターンは、Unicode文字列とASCIIであれば、それはUNICODEにデフォルト設定されます。

したがって、ur'\P{L}'u' 'の置換パターンを使用する必要があります。

文字と発音区別記号以外の1文字以上の文字と一致させる場合は、ur'[^\p{L}\p{M}]+'正規表現が必要です。

関連する問題