6

我想在正则表达式中使用单词边界来匹配一些 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 字母不匹配?

4

3 回答 3

9

使用re.UNICODE

>>> re.search(r"\by\b","üyü", re.UNICODE)
>>> 
于 2013-10-15T07:45:20.070 回答
5

您可以通过以下方式使用它:

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

要熟悉标志,请尝试以下操作:(?iLmsux)

作为一个很好的阅读检查核心 Python 应用程序编程第 3 版.. 里面有一个关于正则表达式的好章节。

于 2013-10-15T09:22:20.940 回答
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
于 2017-12-06T08:27:03.890 回答