2013-10-15 13 views
6

ユニコードテキストとのマッチングのために正規表現で単語境界を使用したいと思います。 Unicodeの文字はとしてここにPythonの正規表現に単語境界として検出されていますPython正規表現のためにユニコードテキストで使用する単語境界

>>> re.search(r"\by\b","üyü") 
<_sre.SRE_Match object at 0x02819E58> 

>>> re.search(r"\by\b","ğyğ") 
<_sre.SRE_Match object at 0x028250C8> 

>>> re.search(r"\by\b","uyu") 
>>> 

私は単語境界記号は、ユニコード文字と一致しないようにするために何をすべき?

答えて

3

あなたはそれを以下の方法を使用することができますCore Python Applications Programming第3版を読んでください。そこにRegexの素晴らしい章があります。

+0

+1、インラインフラグは、多くの場合、より実用的です – georg

7

使用re.UNICODE:良いとして(iLmsux?)

re.search(r'(?u)\by\b', 'üyü') 

には、次のとフラグ実験に精通を得るために:

>>> re.search(r"\by\b","üyü", re.UNICODE) 
>>> 
0
#!/usr/bin/python 
# -*- coding: utf-8 -*- 

s = ur"abcd ААБВ" 
import re 
rx1 = re.compile(ur"(?u)АБВ") 
rx2 = re.compile(ur"(?u)АБВ\b") 
rx3 = re.compile(ur"(?u)\bАБВ\b") 
print rx1.findall(s) 
print rx2.findall(s) 
print rx3.findall(s) 

print re.search(ur'(?u)ривет\b', ur'Привет') 
print re.search(ur'(?u)\bривет\b', ur'Привет') 

出力:

[u'\u0410\u0411\u0412'] 
[u'\u0410\u0411\u0412'] 
[] 
<_sre.SRE_Match object at 0x01F056B0> 
None 
関連する問題