Получение текста с использованием регулярных выражений, исключая определенные условия - PullRequest
0 голосов
/ 07 ноября 2019

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

Некоторое связное предложение.

lalskjfa; ljkd

другие вещи


Пара строк подписи электронной почты бла-бла

бла-бла-бла


Я хочувсе в этом теле письма ИСКЛЮЧАЯ открыватель строки подписи и его содержимое.

Я в основном вырываю все, кроме этого письма с подписью, чтобы переформатировать его для отчетов.

У меня естьпробовал:

  • отрицательный взгляд: \G(\A\z|.*\n*(?!_))

  • положительный взгляд: \G(\A\z|.*\n*(?=_))

Ни один из них, похоже, не справляется с задачей.

С негативным взглядом, кажется, что все хватает. С положительным взглядом, кажется, ничего не хватает.

Вывод, который я надеюсь получить, это текст:

Некоторое связное предложение.

lalskjfa; ljkd

другие вещи

1 Ответ

0 голосов
/ 07 ноября 2019

Вы можете использовать

(?s)\A.*?(?=\n_)

Это соответствует

  • (?s) - re.DOTALL встроенный флаг
  • \A - начало строки
  • .*? - любые 0+ символов, как можно меньше до первого появления
  • (?=\n_) - новая строка с _ char.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...