为什么不\ b \ w + \ b匹配一个单词?

时间:2014-02-09 20:03:17

标签: python regex

为什么以下Python语句返回None

>>> re.match('\b\w+\b', 'foo')
>>>

据我了解,这应与单词foo匹配。第一个\b应与单词foo的开头匹配,\w+应与单词foo匹配,最终的\b应与单词的结尾匹配foo。我的理解有什么问题?

1 个答案:

答案 0 :(得分:8)

如果你没有在\b中转义反斜杠,\b匹配退格,而不是字边界。

>>> '\b'    # BACKSPACE, not \ + b
'\x08'
>>> '\\b'   # \ + b
'\\b'
>>> r'\b'   # raw string literal (r'\b' == '\\b')
'\\b'

>>> re.match('\b\w+\b', 'foo')
>>> re.match(r'\b\w+\b', 'foo')
<_sre.SRE_Match object at 0x0000000002C18100>