Использование ИЛИ в регулярных выражениях
Есть задача распарсить из текста вхожение некоторых слов, которые характеризуются окружающими словами, которые могут быть разными но из конечного множества. Пример текста:
- Ваш результат по продажам продукта ХХХ один из лучших.
- Вы один из лучших по продаже продукта ХХХ в магазине.
Как написать одно регулярное выражение для учета двух случаев?
Для первого я пишу так: r'продукта ([\w\s+]+?)один'
Для второго: r'продукта ([\w\s+]+?)в'
Объединение через логическое или не дает нужный результат: r'продукта ([\w\s+]+?)в|один'.
Скорее всего я неправильно использую ИЛИ.
Есть ли способ объединить корректно? Делаю в python, но скорее всего это не важно.
P.S.: в качестве ХХХ может выступать словосочетание неизвестной длины.
Ответы (1 шт):
Автор решения: ipatev_nn
→ Ссылка
(?<=продукта ).*?(?= один | в )
(?<=продукта )- Позитивнос смотрим назад и ищем текстпродуктаc символом пробела.*- любое количество, любых символов, а?делает более ленивым квантификатор(?= один | в )- позитивный просмотр вперед, где есть либо символ пробел и текстодинили текствпосле которых есть пробел
Пример https://regex101.com/