我正在尝试匹配包含单词的文本(比如说“单词”)。我正在使用以下正则表达式:
r = re.compile(r'\bword\b')
当我尝试这个正则表达式时,我得到以下结果:
r.match('a word a') > None
r.match(' word ') > None
r.match('word') > match
不应该所有三个字符串都匹配吗?
从文档:
re.search(pattern, string, flags=0)扫描字符串,寻找正则表达式模式产生匹配的位置,并返回对应的 MatchObject 实例。如果字符串中没有位置与模式匹配,则返回 None;请注意,这与在字符串中的某个点找到零长度匹配不同。
re.match(pattern, string, flags=0)如果 string 开头的零个或多个字符与正则表达式 pattern 匹配,则返回相应的 MatchObject 实例。如果字符串与模式不匹配,则返回 None;请注意,这与零长度匹配不同。
请注意,即使在 MULTILINE 模式下, re.match() 也只会匹配字符串的开头,而不是每行的开头。
如果要在字符串中的任何位置查找匹配项,请改用 search()
所以,只要做 r.search(...) ,你应该得到你想要的。