Python Regex для соответствия нескольких заголовков и их абзацев в многострочной строке - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь создать Regular-Expression в Python, который должен захватывать заголовки и соответствующий им текст в виде многострочной строки. Пример строки:

.Main Header
This is the main paragraph in the text. Also this is another sentence.
.Sub-Header
This is secondary header and text.
.Last Header
And this is the last header in the text.

Здесь .Main Header, .Sub-Header & .Last Header - заголовки абзацев и следующие несколько строк (текст до следующей строки ".Header" ) тело текста. Итак, мой ожидаемый результат:

Header1 - .Main Header, Text1 - This is the main paragraph in the text. Also this is another sentence.
Header2 - .Sub-Header, Text2 - This is secondary header and text.
Header3 - .Last Header, Text3 - And this is the last header in the text.

Я попытался собрать regex, чтобы оправдать это ожидание, и оно почти работает, единственная проблема, с которой я сталкиваюсь, это захватить текст, где находится dot(.) между предложением (, например, Text1 ), критерии остановки для моих regex - это newline и dot(.), поскольку следующий заголовок начинается с dot(.), поэтому я ищу помощь чтобы дифференцировать обычную точку с точкой новой строки в качестве критерия остановки.

Мое текущее регулярное выражение:

^(.\w+[^\n]+)\n([^\.]+)

Для Text1 это захватывает:

This is the main paragraph in the text

Но следует захватить:

This is the main paragraph in the text. Also this is another sentence.

1 Ответ

1 голос
/ 02 апреля 2020

Может быть, попробуйте следующее регулярное выражение ...

^(.\w+[^\n]+)\n(.*?)\.$

..., которое захватывает все символы от второй строки до последней точки в конце строки.

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

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