Редовни изрази: Има ли оператор AND?
Очевидно е, че можете да използвате |
(pipe?), за да представите OR
, но има ли начин да представите и AND
?
По-конкретно, бих искал да сравнявам параграфи от текст, които съдържат ВСИЧКИ думи от определена фраза, но без определен ред.
651
3
Използвайте неконсумиращ регулярен израз.
Типичният (т.е. Perl/Java) запис е:
(?=
expr)
Това означава "съвпадение с expr, но след това продължава съвпадението в първоначалната точка на съвпадение."
Можете да направите колкото искате от тях и това ще бъде "и." Пример:
(?=съвпада с този израз)(?=съвпада и с този)(?=о, и това)
Можете дори да добавяте групи за улавяне вътре в неконсумиращите изрази, ако трябва да запазите някои от данните в тях.
Не е ли възможно във вашия случай да се направи AND върху няколко съвпадащи резултата? в псевдокод
Редът винаги се подразбира от структурата на регулярния израз. За да постигнете това, което искате, ще трябва да съпоставите входния низ няколко пъти с различни изрази.
Това, което искате да направите, не е възможно с един регексп.