Python正则表达式来匹配特定单词
我想匹配测试报告中包含单词“Not Ok”的所有行。 文本的示例行:Python正则表达式来匹配特定单词,python,regex,match,Python,Regex,Match,我想匹配测试报告中包含单词“Not Ok”的所有行。 文本的示例行: 'Test result 1: Not Ok -31.08' 我试过这个: filter1 = re.compile("Not Ok") for line in myfile: if filter1.match(line): print line 这应该根据工作,但我没有得到任何输出。有什么想法吗,有什么问题吗?测试了各种其他
'Test result 1: Not Ok -31.08'
我试过这个:
filter1 = re.compile("Not Ok")
for line in myfile:
if filter1.match(line):
print line
这应该根据工作,但我没有得到任何输出。有什么想法吗,有什么问题吗?测试了各种其他参数,如“.”和“^Test”,这些参数工作正常 您应该在此处使用
re.search
而不是re.match
从上的re.match
:
如果要在字符串中的任何位置查找匹配项,请改用search()
如果要查找确切的单词“Not Ok”
,请使用\b
单词边界,否则
如果只查找子字符串“不正常”
,请在字符串中使用simple:if“Not Ok”
>>> strs = 'Test result 1: Not Ok -31.08'
>>> re.search(r'\bNot Ok\b',strs).group(0)
'Not Ok'
>>> match = re.search(r'\bNot Ok\b',strs)
>>> if match:
... print "Found"
... else:
... print "Not Found"
...
Found
你可以用
if <keyword> in str:
print('Found keyword')
在这种情况下,绝对不需要使用正则表达式!只需使用:
s = 'Test result 1: Not Ok -31.08'
if s.find('Not Ok') > 0 :
print("Found!")
或者如前所述:
if 'Not Ok' in s:
print("Found!")
如果是特定字符串,为什么要使用正则表达式?为什么不
如果第行中的“not Ok:
?顺便说一句,re.match()
只匹配字符串的开头。我确信match不能只匹配字符串的开头。。$不应该匹配行尾吗?也许我不清楚:re.match(“a”)
与re.search(“a”)相同re.match(“Not Ok”)
将为返回True
“Not Ok Joe!”
并为返回False
“It Not Ok!”
。啊,我明白了。从Python文档中不太清楚。每天学习新的东西!事实上,即使没有任何额外的东西,这种方法也能奏效。谢谢我还发现re.findall在这种情况下起作用。@casper如果没有\b
它也会返回True
类似的内容:'KNot Oke'
re.findall
返回所有非重叠匹配项的列表,用于检查re.search
是最佳选择。
if 'Not Ok' in s:
print("Found!")