Подтвердить что ты не робот

Регулярное выражение 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", которые работают отлично.

4b9b3361

Ответ 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')