正则表达式 - 当我添加^ $时,匹配国际字符的表达式不起作用

时间:2014-08-08 09:49:15

标签: python regex internationalization

尝试在Python中使用正则表达式来匹配单词字符,国际单词字符(例如中文),并且无法理解它,所以需要一些帮助。

我试过了:

ur'(?ui)[\w]'并且它匹配例如:"斗牛"

但是如果我在字符串中加上问号或分号(例如"斗牛?!"),它也匹配。

接下来,我尝试添加字符串开头和字符串结尾的符号,例如。 :ur'^(?ui)[\w]$'并且它没有为"斗牛"返回匹配,即使从我能告诉它应该做什么?!

任何帮助非常感谢。

1 个答案:

答案 0 :(得分:1)

您的输入包含两个代码点,因此您需要匹配多个字符

ur'^(?ui)[\w]+$'

此处不需要[...]字符类,因为\w是它自己的完整类:

ur'(?ui)^\w+$'

演示:

>>> import re
>>> pattern = re.compile(ur'(?ui)^\w+$')
>>> pattern.search(u'斗牛')
<_sre.SRE_Match object at 0x10884e168>
>>> pattern.search(u'斗牛?') is None
True