【发布时间】:2014-03-07 00:31:27
【问题描述】:
为什么下面的 Python 语句会返回 None?
>>> re.match('\b\w+\b', 'foo')
>>>
据我了解,这应该与 foo 这个词匹配。第一个\b 应该匹配单词foo 的开头,\w+ 应该匹配单词foo,最后一个\b 应该匹配单词foo 的结尾。我的理解有什么问题?
【问题讨论】:
为什么下面的 Python 语句会返回 None?
>>> re.match('\b\w+\b', 'foo')
>>>
据我了解,这应该与 foo 这个词匹配。第一个\b 应该匹配单词foo 的开头,\w+ 应该匹配单词foo,最后一个\b 应该匹配单词foo 的结尾。我的理解有什么问题?
【问题讨论】:
如果您在\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>