Как бы я сделал это выражение Regex более содержательным и точным? - PullRequest
0 голосов
/ 10 апреля 2019

Я использую Python 2.7, чтобы найти текст в абзаце текста. следующий текст является частью моего извлечения:

Item 1 for Product A: Flour
Solution 1 for Product A: Water
Items 2 for Product B: Milk
Solution 2 for Product B: Oil
Item 3 for Product C: Onions

Method

У меня есть следующий код Python для извлечения определенных частей информации, которую я хочу:

extract = re.findall(r"(?<=Item|s\s).*(?=\sSolution)", page_content)

Хотя это извлекает некоторую информацию, я не могу извлечь все, что мне нужно. Мне нужно включить слово «Элемент», и я не могу извлечь последний элемент, так как следующее слово не «Решение», а «Метод».

мой желаемый результат будет:

Item 1 for Product A: Flour
Items 2 for Product B: Milk
Item 3 for Product C: Onions

любая помощь будет полезна в уточнении регулярного выражения.

спасибо

1 Ответ

1 голос
/ 10 апреля 2019

Если ваш ввод выглядит как

Item 1 for Product A: FlourSolution 1 for Product A: WaterItems 2 for Product B: MilkSolution 2 for Product B: OilItem 3 for Product C: Onions

Method

Следующий шаблон дает вам необходимый вывод.

r'(Item[s]{0,1}.*?\:\s[A-Z][a-z]*[^A-Z])'

Проверьте это здесь: https://regex101.com/r/ucPdcV/2

...