У меня большой блок текста, в котором я пытаюсь найти фразу. Фраза может быть структурирована различными способами.
- Сначала я хочу найти слово из набора слов, давайте назовем его
установить 1.
- После этого должен быть пробел или запятая (или, может быть, что-то
еще что разделяет слова)
- Тогда может быть 0 или более слов из набора 2
- Снова следуют символы разделения слов, как в пункте 2 выше
- наконец, должно быть слово из множества 3
В идеале все они должны быть в одном предложении.
набор 1 = (Potential|Ability|Possibility|need|requires|needs|plenty|for|Needing|Requiring)
набор 2 = (for|to|of|full|a|be|complete|Internal)
набор 3 = (renovate|improve|modernise|modernize|update|renovating|improving|modernising|modernizing|updating|potential|project|renovation)
Итак, у меня есть это регулярное выражение
(Potential|Ability|Possibility|need|requires|needs|plenty|for|Needing|Requiring)[ ,]*(for|to|of|full|a|be|complete|Internal)[ ,]*(renovate|improve|modernise|modernize|update|renovating|improving|modernising|modernizing|updating|potential|project|renovation)
Теперь это будет соответствовать фразе, в которой есть 0 или 1 слово из набора 2, но не при наличии кратных. например, «предоставляет прекрасную возможность для кого-то добавить свой собственный штамп, так как недвижимость нуждается в полной реконструкции во всем.»
, как только я добавляю «а» до «завершения», происходит сбой. Так же, как если бы я добавил еще одно «завершено».
Как указать, чтобы искать 0 или несколько слов из набора?