Python регулярное выражение с необязательным началом и концом - PullRequest
0 голосов
/ 16 января 2020

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

  • подарок из: Юлиус Е. Грегович из квартиры 10B до: Брюс Фолк
  • Леон Кросс и Мэри Уильямс до: Кеннет Дж. С. Эндрюс
  • от: Мэри Р. Уильямс

в каждом из них я хочу извлечь то, что находится между "от:" и "до:", поэтому:

  • Юлиус Э. Грегович из квартира 10B
  • Леон Кросс и Мэри Уильямс
  • Мэри Р. Уильямс

Хотя я не могу решить проблему с пропущенными ключевыми словами. До этого момента я пробовал выражение, которое имеет две альтернативы:

(?:from:)(.*?)(?=from:)|(.*?)(?=>to:)

Но я не могу работать в альтернативе, где присутствуют оба ключевых слова

1 Ответ

2 голосов
/ 17 января 2020

Вот как я бы это сделал:

(?:.*from: )?(.+?)(?: to:.*|$)

Демо: https://regex101.com/r/7Tj9Lx/1

Ваше желаемое возвращаемое значение будет в первая и единственная группа захвата.

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