0

我正在尝试匹配包含单词的文本(比如说“单词”)。我正在使用以下正则表达式:

r = re.compile(r'\bword\b')

当我尝试这个正则表达式时,我得到以下结果:

r.match('a word a') > None
r.match(' word ') > None

r.match('word') > match

不应该所有三个字符串都匹配吗?

4

1 回答 1

2

文档

re.search(pattern, string, flags=0)扫描字符串,寻找正则表达式模式产生匹配的位置,并返回对应的 MatchObject 实例。如果字符串中没有位置与模式匹配,则返回 None;请注意,这与在字符串中的某个点找到零长度匹配不同。

re.match(pattern, string, flags=0)如果 string 开头的零个或多个字符与正则表达式 pattern 匹配,则返回相应的 MatchObject 实例。如果字符串与模式不匹配,则返回 None;请注意,这与零长度匹配不同。

请注意,即使在 MULTILINE 模式下, re.match() 也只会匹配字符串的开头,而不是每行的开头。

如果要在字符串中的任何位置查找匹配项,请改用 search()

所以,只要做 r.search(...) ,你应该得到你想要的。

于 2013-05-30T21:25:03.097 回答