Регулярное выражение Python для соответствия определенному слову
Я хочу сопоставить все строки в тестовом отчете, содержащие слова "Не Ok".
Пример строки текста:
'Test result 1: Not Ok -31.08'
Я пробовал это:
filter1 = re.compile("Not Ok")
for line in myfile:
if filter1.match(line):
print line
который должен работать в соответствии с http://rubular.com/, но я ничего не получаю на выходе. Любая идея, что может быть неправильно? Протестированы различные другие параметры, например "." и "^ Test", которые работают отлично.
Ответы
Ответ 1
Вы должны использовать re.search
здесь не re.match
.
Из docs в re.match
:
Если вы хотите найти совпадение в любом месте строки, используйте вместо него поиск().
Если вы ищете точное слово 'Not Ok'
, используйте \b
границы слов, иначе
если вы ищете только подстроку 'Not Ok'
, тогда используйте simple: if 'Not Ok' in string
.
>>> 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
Ответ 2
Вы можете просто использовать
if <keyword> in str:
print('Found keyword')
Пример:
if 'Not Ok' in input_string:
print('Found string')