Запрос регулярного выражения для захвата группы слов - PullRequest
0 голосов
/ 01 марта 2020

Я хочу создать запрос регулярного выражения для захвата точных слов в документах. Слова, которые я хочу запечатлеть: ["Lorem", "Ipsum", "Dolor", "Sit Amet", "Consectetur Adipiscing"]. Исходный текст выглядит примерно так:

string = "
text before ....
Draft Report 








Lorem



Lorem



Lorem



Ipsum



Dolor



Dolor



Sit Amet



Consectetur Adipiscing



Consectetur Adipiscing



Sit Amet







Reason for test: Lorem Ipsum dolor sit amet, consectetur adipiscing elit.
the text goes on..."

Однако я хочу записать слова только после «Отчета» и перед «Причиной». Также обратите внимание, что после желаемой группы захвата могут быть слова, отличные от «Причина», поэтому это может быть что-то вроде этого:

string = "
text before ....
Draft Report 








Lorem



Lorem



Lorem



Ipsum



Dolor



Dolor



Sit Amet



Consectetur Adipiscing



Consectetur Adipiscing



Sit Amet







Another probability for this test: Lorem Ipsum dolor sit amet, consectetur adipiscing elit.
the text goes on..."

Я хочу извлечь текст из приведенных выше примеров, чтобы результат был :

extracted_text = "
Lorem



Lorem



Lorem



Ipsum



Dolor



Dolor



Sit Amet



Consectetur Adipiscing



Consectetur Adipiscing



Sit Amet"

Или список вроде: ["Lorem", "Lorem", "Lorem", "Ipsum", "Dolor", "Dolor", "Sit Amet", "Consectetur Adipiscing", "Consectetur Adipiscing", "Sit Amet"]

У вас есть предложения?

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

Я считаю, что вы не хотите использовать регулярные выражения для вашего случая использования. Предполагая, что слова, которые вы ищете, разделены тремя новыми строками, тогда следующее должно привести к вашему желаемому выводу

'\n\n\n'.join(string.split('\n\n\n')[1:-1])

или, если вы хотите его как список, который вы описали, то что-то вроде этого:

list(map(lambda y: y.strip('\n'), filter(lambda y: y != '', string.split('\n\n\n')[1:-1])))
0 голосов
/ 01 марта 2020

Вы можете сначала извлечь все между «Report» и «Reason» с помощью (?s)Report(.*?)Reason, затем извлечь только необходимые слова с помощью \b(Lorem|Ipsum|Dolor|Sit Amet|Consectetur Adipiscing)\b

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