2013-05-30 217 views
0

我想匹配包含单词的文本(让我们说'单词')。我使用正则表达式如下:简单的正则表达式匹配包含某个单词的字符串

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

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

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

r.match('word') > match 

如果不是所有的三个字符串匹配吗?

+1

'r.search('... word ...')'可能会更好地工作 –

回答

2

docs

re.search(模式,字符串标志= 0)扫描通过串寻找一个 位置,其中正则表达式模式产生一个匹配,和 返回一个对应的MatchObject实例。如果字符串中没有 位置与模式匹配,则返回无;请注意,这是 不同于在 字符串中的某个点找到零长度匹配。

re.match(图案,字符串标志= 0)如果在 开始字符串的零个或多个字符匹配正则表达式模式,返回一个 对应MatchObject实例。如果字符串不是 匹配模式,则返回无;请注意,这与零长度 匹配不同。

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

如果你想在string中任何地方找到一个匹配,使用搜索(),而不是

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

相关问题