Почему IN не оценивает мое регулярное выражение?

#python #regex #python-3.x

#python #регулярное выражение #python-3.x

Вопрос:

Используя Python 3.x, я просматриваю файлы журналов, и в большинстве строк есть одно из трех ключевых слов (INFO, ERROR или WARN).

Я определяю регулярное выражение, чтобы увидеть, содержит ли строка любое из этих слов как:

 INFO|ERROR|WARN
 

Я был уверен, что это правильный путь для решения этой проблемы, но, похоже, он не работает. Кто-нибудь знает, чего мне здесь не хватает?

Я проверяю, есть ли регулярное выражение в строке, просто печатая его:

 Properties.py
    status = "INFO|ERROR|WARN"

Runner.py
    import properties as p
    import re
    line = "[time stamp] INFO [other information]"
    print(p.status in line)
    line = "[time stamp] ERROR [other information]"
    print(p.status in line)
 

Выходной сигнал:

 False
False
 

Он печатает только ложь.

Комментарии:

1. И где ваш вызов функций регулярных выражений?

2. _ in _ , когда аргументы являются строками, проверяет наличие подстрок. Регулярные выражения не встроены в Python.

3. Вау. Я не мог мыслить ясно. Извините, что потратил время всех.

Ответ №1:

Вам нужно фактически вызвать одну или несколько функций in re (не использовать in ), чтобы использовать механизм регулярных выражений:

 print(bool(re.search(p.status, line)))
 

Комментарии:

1. Спасибо. Глупая ошибка, не думал ясно.