Извлечь текст из заданного слова до конца абзаца с помощью регулярного выражения - PullRequest
1 голос
/ 01 апреля 2019

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

"Антон: мне нужен персонал .... ........................ .................... сейчас

Antor: Ok. "

Мне нужно найти первый текст после слова «нужно» (и «нужно» или «нужно») до конца абзаца.

Мой код выдает 'none':

with open('pars_text2.txt', 'r') as pars_text2:
    conversation = pars_text2.read()
pattern=r'^(all.need[,\s]*)'
second=re.match(pattern, conversation)
print(second)

И он должен давать строку "нужен персонал .... ........................ .................... сейчас ".

1 Ответ

2 голосов
/ 01 апреля 2019

Если в конце абзаца вы имеете в виду одну пустую строку, вы можете захватить группу:

^.*?(\b(?:need(?:ed|ing)?)\b.*(?:(?!\n[ \t]*$)\n.*)*)

Объяснение

  • ^ Начало строки
  • .*? Соответствует любому символу, кроме новой строки, не жадной
  • ( Группа захвата (будет содержать ваше значение)
    • \b(?:need(?:ed|ing)?)\b Соответствует потребности, необходимости или необходимости
    • .* Соответствует любому символу, кроме новой строки
    • (?:(?!\n[ \t]*$)\n.*)* Повторите 0+ раз, сопоставляя всю строку, утверждая при этом с отрицательным прогнозом, что то, что следует сразу же, не является пустой строкой
  • ) Закрыть группу захвата

Regex demo | Python demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...