无法在unicode字符串中使python的正则表达式忽略大小写

时间:2013-05-30 17:30:43

标签: python regex

无法在unicode字符串中使用python的正则表达式忽略大小写。

mach = re.search(ur'(?P<mach>(?<=\s)%s(?=[\s\.]))' % u'смотреть', st, re.I | re.U)

其中

st = u" человека... Смотреть телесериал на тернет. "

注意这个词 - Смотреть

我希望我的正则表达式能够找到这个词以及смотреть

到目前为止:

print mach
> None

PS: 每个人现在都可以开始减去我的问题。它现在真的有效。即使从我的例子。但是,我花了一半的时间来解决这个问题。

1 个答案:

答案 0 :(得分:6)

您正在使用st的字符串。这样它将unicode正则表达式与某些字节串匹配(取决于您的编码)。使用unicode字符串:

st = u" человека... Смотреть телесериал на тернет. "
print re.search(ur'(?P<match>(?<=\s)%s(?=[\s\.]))' % u'смотреть', st, re.I | re.U).groupdict()
#  {u'match': u'\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c'}