Регулярные выражения: есть ли оператор И?

Вам необходимо использовать regexp опережающий просмотр, как perlre сказали некоторые другие apache-regexp респонденты, но опережающий perlre просмотр должен учитывать regular-expressions другие символы между целевым lookahead словом и текущей позицией regular-expression совпадения. Например:

(?=.*word1)(?=.*word2)(?=.*word3)

.* в первом regexes просмотре вперед позволяет apache-regexp ему сопоставить любое количество perlre символов, которое ему нужно, прежде regular-expressions чем оно дойдет до "word1". Затем regex позиция совпадения сбрасывается, и regular-expressions второй просмотр вперед ищет regular-expression "слово2". Сбросьте снова, и regexp последняя часть соответствует regular-expressions "word3"; поскольку это последнее regex-php слово, которое вы проверяете, нет regex необходимости использовать regex его в предварительном просмотре, но regexes это не повредит.

Чтобы сопоставить perl-regex весь абзац, вам нужно привязать regexp регулярное выражение к обоим apache-regexp концам и добавить последний regular-expression .*, чтобы использовать оставшиеся perl-regex символы. Используя нотацию lookahead в стиле Perl, это будет:

/^(?=.*word1)(?=.*word2)(?=.*word3).*$/m

Модификатор regularexpression m предназначен для многострочного regexp режима; он позволяет ^ и $ совпадать lookahead по границам абзаца («границы regular-expression строк» ​​в языке регулярных regular-expression выражений). В этом случае perlre важно, чтобы вы не использовали regularexpression модификатор 's', который apache-regexp позволяет метасимволу точки lookahead соответствовать символам regular-expressions новой строки, а также всем perlre остальным символам.

Наконец, вы regular-expression хотите убедиться, что вы regex соответствуете целым словам, а regex-php не только фрагментам более perl-regex длинных слов, поэтому вам lookahead нужно добавить границы слов:

/^(?=.*\bword1\b)(?=.*\bword2\b)(?=.*\bword3\b).*$/m

regex

lookahead

2022-11-18T05:34:46+00:00
Вопросы с похожей тематикой, как у вопроса:

Регулярные выражения: есть ли оператор И?