Редовни изрази: Има ли оператор AND?

Очевидно е, че можете да използвате | (pipe?), за да представите OR, но има ли начин да представите и AND?

По-конкретно, бих искал да сравнявам параграфи от текст, които съдържат ВСИЧКИ думи от определена фраза, но без определен ред.

Използвайте неконсумиращ регулярен израз.

Типичният (т.е. Perl/Java) запис е:

(?=expr)

Това означава "съвпадение с expr, но след това продължава съвпадението в първоначалната точка на съвпадение."

Можете да направите колкото искате от тях и това ще бъде "и." Пример:

(?=съвпада с този израз)(?=съвпада и с този)(?=о, и това)

Можете дори да добавяте групи за улавяне вътре в неконсумиращите изрази, ако трябва да запазите някои от данните в тях.

Коментари (14)

Не е ли възможно във вашия случай да се направи AND върху няколко съвпадащи резултата? в псевдокод

regexp_match(pattern1, data) && regexp_match(pattern2, data) && ...
Коментари (1)

Редът винаги се подразбира от структурата на регулярния израз. За да постигнете това, което искате, ще трябва да съпоставите входния низ няколко пъти с различни изрази.

Това, което искате да направите, не е възможно с един регексп.

Коментари (2)