0

我正在尝试一个简单的正则表达式代码来匹配以下内容:

line = 'blah black blacksheep blah' 
if re.match(r'(\bblack\b)', line):
    print 'found it!

我做错了什么,我自己找不到“黑色”?

4

4 回答 4

4

文档

re.match(pattern, string, flags=0)

如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的MatchObject实例。

您可能想使用re.searchorre.findall代替。

于 2013-05-29T15:43:19.600 回答
2

你应该在这里使用re.searchor re.findall

>>> strs = 'blah black blacksheep blah'
>>> re.search(r'\bblack\b', strs).group(0)
'black'

>>> re.findall(r'\bblack\b', strs)
['black']
于 2013-05-29T15:43:31.753 回答
1

你想要re.search而不是re.match. 从文档

7.2.5.3。搜索()与匹配()

Python 基于正则表达式提供了两种不同的原始操作:re.match()仅在字符串的开头检查匹配,而在re.search()字符串中的任何位置检查匹配(这是 Perl 默认所做的)。

于 2013-05-29T15:43:59.027 回答
0

使用re.search()(如果整个字符串都不匹配,则返回 None):

line = 'blah black blacksheep blah' 
if re.search(r'(\bblack\b)', line):
    print 'found it!
于 2013-05-29T16:11:17.133 回答