2012-11-07 17 views
7

私は、Pythonを除いて、this questionの解決策が必要です!私はPythonのregexesでPOSIX式の使用を可能にするPython用の正規表現ライブラリas apparentlyをインストールしようとしましたが、[:alpha:]クラスのUnicode文字は含まれていないと思います。例:私は、Python 2.7を使用していますアクセント付き文字をPythonで正規表現とマッチさせるには?

EDIT 2:私はそれがPlease work blåbær and NOW stop

EDIT一致させたいとき

>>> re.search(r'[[:alpha:] ]+','Please work blåbær and NOW stop 123').group(0) 
'Please work bl' 

を私は次のことを試してみました:

>>> re.search(re.compile('[\w ]+', re.UNICODE),'Please work blåbær and NOW stop 123').group(0) 
'Please work bl\xc3' 

私が望んでいたものではありません(最初の非ASCII文字の後の部分にも一致させたい)、b少なくともそれは以前よりも文字にマッチしました。私はそれを私が望む残りの部分と一致させるためにここで何をしなければならないのですか?

EDIT 3:「単語」以外の文字は一致させたくありません。 「単語」とは、a-z、A-Z、スペース、およびアクセント付きの単語の文字を意味します。私は私の考えを横切って願っています。

lets match força, but stop before that comma 

のようなフレーズで私が唯一lets match força

EDIT 4マッチさせたい:をだから私はこの1つのだけのスクリプトのためのPython 3を使用しようとしました:

>>> re.search(re.compile('[\w ]+', re.UNICODE),'lets match força, but stop before that comma').group(0) 
'lets match força' 

私はそれが動作すると思いますPython 3の大部分は、数値(これは間違いなく)と一致し、下線を引いている点が異なります。これを修正する方法は、Python 2 または 3でですか?

答えて

2

使用しているPythonのバージョンが不明です。あなたが2.xを使用しているなら、おそらくユニコードの問題があります。このポインタpostを参照してください。あなたの質問を更新してさらに詳しく説明してください。

イム私は適切なUnicode表現にアクセント文字を変換することはできませんことを、非常にsurprissed ...

が、ある回避策:

re.search(re.compile('((\w+\s)|(\w+\W+\w+\s))+', re.UNICODE), ur'Please work blåbær and NOW stop 123').group(0) 

または

re.search(re.compile('\D+', re.UNICODE), ur'Please work blåbær and NOW stop 123').group(0) 
関連する問題