【问题标题】:Python regex with unicode characters bug?带有 unicode 字符的 Python 正则表达式错误?
【发布时间】:2011-04-06 03:49:15
【问题描述】:

长话短说:

>>> 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 字符的字符串?据我了解,^ 代表字符串(行)的开头,$ - 代表字符串的结尾。

【问题讨论】:

    标签: python regex unicode match character-properties


    【解决方案1】:

    你需要指定UNICODE flag,否则\w就相当于[a-zA-Z0-9_],不包括字符'ç'。

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

    【讨论】:

    • 为什么这个麦芽汁:&gt;&gt;&gt; re.compile(r"\w*").match(u"Français")?
    • @ak: 你确定匹配返回Français 而不是Fran 吗?请注意,如果没有 $,正则表达式直到最后才会匹配。
    • \w* 将完全匹配任何内容。 * 匹配 0 次或多次。
    猜你喜欢
    • 2015-03-30
    • 2012-09-26
    • 2010-09-28
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多