Python正则表达式与unicode字符错误?
长话短说:
>>> 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 字符的字符串?据我了解 ^
代表字符串(行)的开头,而 $
- 代表字符串的结尾。
Long story short:
>>> 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>
>>>
Why doesn't it match the string with unicode characters with ^
and $
in the regex? As far as I understand ^
stands for the beginning of the string(line) and $
- for the end of it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要指定
UNICODE
标志,否则\w
仅相当于[a-zA-Z0-9_]
,其中不包含字符“ç
”。You need to specify the
UNICODE
flag, otherwise\w
is just equivalent to[a-zA-Z0-9_]
, which does not include the character 'ç
'.