我正在尝试一个简单的正则表达式代码来匹配以下内容:
line = 'blah black blacksheep blah'
if re.match(r'(\bblack\b)', line):
print 'found it!
我做错了什么,我自己找不到“黑色”?
从文档:
re.match(pattern, string, flags=0)
如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的
MatchObject
实例。
您可能想使用re.search
orre.findall
代替。
你应该在这里使用re.search
or re.findall
:
>>> strs = 'blah black blacksheep blah'
>>> re.search(r'\bblack\b', strs).group(0)
'black'
>>> re.findall(r'\bblack\b', strs)
['black']
你想要re.search
而不是re.match
. 从文档:
7.2.5.3。搜索()与匹配()
Python 基于正则表达式提供了两种不同的原始操作:
re.match()
仅在字符串的开头检查匹配,而在re.search()
字符串中的任何位置检查匹配(这是 Perl 默认所做的)。
使用re.search()
(如果整个字符串都不匹配,则返回 None):
line = 'blah black blacksheep blah'
if re.search(r'(\bblack\b)', line):
print 'found it!