Регулярные выражения Python - как захватить оставшуюся часть текста, который не был захвачен - PullRequest
0 голосов
/ 11 июня 2018

Уважаемые участники сообщества!

Я изо всех сил пытаюсь выяснить проблему с регулярными выражениями.Цель состоит в том, чтобы разбить текст на отдельные части с ключевым словом (consectetur | tempor incididunt | proident | consequat) в качестве разделителя и добавить ключевое слово к захваченной текстовой части.Начните захват новой группы снова, пока не будет найдено другое ключевое слово. К сожалению, я застрял, чтобы найти решение для захвата последнего бита текста, который не имеет ключевых слов и должен быть добавлен в конец последней группы захвата или новой группы,Можно ли решить даже с помощью регулярных выражений?

Обратите внимание на ссылки внизу

Регулярное выражение: (. *?)(consectetur | tempor incididunt | proident | consequat)

Текст: Lorem ipsum dolor sit amet, приверженец elip, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam, quis nostrud упражнение ullamco labouris nisi ut aliquip ex ea кассовый следствие.Duis aute irure dolor в репереендерит в завитке Velit esse cillum dolore eu fugiat nulla pariatur.Excepteur sint occaecat cupidatat непроизведенный, иск в виновном виновнике dellrunt mollit anim id est labum.

Желаемый результат:

Матч 1

  1. Lorem ipsum dolor sit amet,

  2. consectetur

Match 2

  1. adipiscingelit, sed do eiusmod

  2. tempid incididunt

Match 3

  1. ut labore et dolore magnaaliqua.Ut enim ad minim veniam, квис нострумная тренировка ullamco labouris nisi ut aliquip ex ea Коммодо

  2. последовательность

Матч 4

  1. .Duis aute irure dolor в репереендерит в завитке Velit esse cillum dolore eu fugiat nulla pariatur.Excepteur sint occaecat cupidatat non

  2. proident

  3. sunt in culpa qui officia deserunt mollit anim id est labour.

Ниже я приложил подтверждающую информацию с тем, что у меня имеется:

Спасибо за помощь заранее!

1 Ответ

0 голосов
/ 11 июня 2018

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

(.*?)(consectetur|tempor incididunt|proident|consequat|\Z)

\Z соответствует самому концу текста в Python.Смотрите regex demo .

Итак, шаблон теперь соответствует:

  • (.*?) - Группа 1: любые 0+ символов, как можно меньше, вплоть допервое вхождение
  • (consectetur|tempor incididunt|proident|consequat|\Z) - любая из альтернатив: consectetur, tempor, incididunt, proident, consequat или конец строки.

Если строка может иметь разрывы строк, используйте флаг re.DOTALL при компиляции регулярного выражения:

rx = re.compile(r'(.*?)(consectetur|tempor incididunt|proident|consequat|\Z)', re.DOTALL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...