我正在尝试使用简单的正则表达式代码来匹配以下内容:
line = 'blah black blacksheep blah'
if re.match(r'(\bblack\b)', line):
print 'found it!
我做错了什么,我自己找不到“黑”?
答案 0 :(得分:5)
来自the docs:
re.match(pattern, string, flags=0)
如果 string 开头的零个或多个字符与正则表达式 pattern 匹配,则返回相应的
MatchObject
实例。
您可能希望改为使用re.search
或re.findall
。
答案 1 :(得分:3)
您应该在这里使用re.search
或re.findall
:
>>> strs = 'blah black blacksheep blah'
>>> re.search(r'\bblack\b', strs).group(0)
'black'
>>> re.findall(r'\bblack\b', strs)
['black']
答案 2 :(得分:1)
您希望re.search
代替re.match
。来自docs:
<强> 7.2.5.3。 search()vs. match()
Python提供了两种基于常规的基本操作 表达式:
re.match()
仅在开头检查匹配项 字符串,而re.search()
检查匹配中的任何位置 string(这是Perl默认执行的操作)。
答案 3 :(得分:0)
使用re.search()
(如果整个字符串不匹配,则返回None):
line = 'blah black blacksheep blah'
if re.search(r'(\bblack\b)', line):
print 'found it!