У меня есть список слов - "foo"
, "bar"
, "baz"
- и я хочу написать регулярное выражение, которое будет соответствовать строкам, которые содержат как минимум 2 из них. Например, "foo baz"
должен совпадать, тогда как "ba foo z"
не должен.Регулярное выражение, которое соответствует хотя бы двум словам из списка
Очевидное решение "(foo|bar|baz).*(foo|bar|baz)"
работает, но я нахожу его неудовлетворительным, потому что он перечисляет слова дважды. Что, если у меня есть 25 слов вместо 3? Что делать, если я ищу строки, содержащие не менее 4 заданных слов вместо двух?
Разрешено ли 'foo ... foo'? – Toto
@ M42: хороший вопрос. Все решения, которые я вижу, принимают, но мне интересно, есть ли способ исключить его ... – sds