我正在尝试匹配包含单词的文字(让我们说'单词')。我正在使用以下正则表达式:
r = re.compile(r'\bword\b')
当我尝试这个正则表达式时,我得到以下结果:
r.match('a word a') > None
r.match(' word ') > None
r.match('word') > match
不应该所有三个字符串匹配吗?
答案 0 :(得分:2)
来自docs:
re.search(pattern,string,flags = 0)扫描字符串寻找a 正则表达式模式生成匹配的位置,和 返回相应的MatchObject实例。如果没有,则返回None 字符串中的位置与模式匹配;请注意这是 不同于在某个点找到零长度匹配 字符串。
re.match(pattern,string,flags = 0)如果是零个或多个字符 字符串的开头匹配正则表达式模式,返回一个 相应的MatchObject实例。如果字符串没有,则返回None 匹配模式;请注意,这与零长度不同 匹配。
请注意,即使在MULTILINE模式下,re.match()也仅匹配 字符串的开头而不是每行的开头。
如果您想在字符串中的任何位置找到匹配项,请使用search()代替
所以,只要做r.search(...)就可以得到你想要的东西。