/ / Запис коду регулярного виразу для рядка, що виникає перед двома іншими - python, regex

Написання коду регулярного виразу для рядка відбувається до двох інших - python, regex

Я намагаюся написати код пошуку регулярного виразу для наступної ідеї -

sentence one BEFORE {sentence2 AND sentence 3}

3 фрази, sentence one, sentence2 і sentence 3 надаються коду окремо.

Я з легкістю можу це зробити

re.search(sentence one.*?sentence2) AND re.search(sentence one.*?sentence 3),

але я думав, чи є спосіб висловити оригінальну ідею в межах одного виразу. Я використовую Python.

EDIT - Просто хотілося згадати, що не обов'язково існувати всі фрази. Для уточнення, результуючий регулярний вираз буде правилом. Якщо будь-який з sentence2 або sentence 3 існують у файлі, він повинен задовольняти його, і якщо обидва існують, то теж. Якщо sentence one не існує у файлі, то це буде марно.

Відповіді:

1 для відповіді № 1

Я думаю, що найбільш ясний спосіб - це зробити за допомогою керуючого потоку, як ви.

Ви могли б зробити щось подібне

sentence 1 then (sentence 2 then sentence 3 or sentence 3 then sentence 2)

тобто

sentence one.*?(?:sentence two.*?sentence three|sentence three.*?sentence two)

але, очевидно, це набагато менш читабельне і не узагальнюване.

Зауважимо, що все це припускає, що речення не перетинаються.