我想在正则表达式中使用单词边界来匹配某些unicode文本。 Unicode字母在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")
>>>
为了使单词边界符号与unicode字母不匹配,我该怎么做?
答案 0 :(得分:7)
使用re.UNICODE:
>>> re.search(r"\by\b","üyü", re.UNICODE)
>>>
答案 1 :(得分:4)
您可以通过以下方式使用它:
re.search(r'(?u)\by\b', 'üyü')
要熟悉旗帜,请尝试以下内容:(?iLmsux)
作为一个很好的阅读,请查看Core Python应用程序编程第3版。其中有一个关于Regex的很好的章节。
答案 2 :(得分: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