带有unicode字符的Python正则表达式错误?

时间:2010-08-31 08:31:47

标签: python regex unicode match character-properties

长话短说:

>>> re.compile(r"\w*").match(u"Français")
<_sre.SRE_Match object at 0x1004246b0>
>>> re.compile(r"^\w*$").match(u"Français")
>>> re.compile(r"^\w*$").match(u"Franais")
<_sre.SRE_Match object at 0x100424780>
>>> 

为什么它与正则表达式中带有^$的unicode字符的字符串不匹配?据我所知,^代表字符串(行)和$的开头 - 代表它的结尾。

1 个答案:

答案 0 :(得分:5)

您需要指定UNICODE flag,否则\w只相当于[a-zA-Z0-9_],其中不包含字符“ç”。

>>> re.compile(r"^\w*$", re.U).match(u"Fran\xe7ais")
<_sre.SRE_Match object at 0x101474168>