http://www.perlmonks.org?node_id=434196


in reply to Boolean operators in PERL regexp?

I recommend against using these (a parser would work better), but here's a snippet from my scratchpad:

/^(?:(?!$re).)*$/ # NOT re /$re1|$re2/ # re1 OR re2 /^(?=.*$re1)(?=.*$re2)/ # re1 AND re2

NOT must be anchored on both ends, but it doesn't have to be with ^ and $.

AND doesn't have to be anchored, but if the start is anchored (with ^ or by some other means), it should speed up the case where there is no match.

The .* in AND may need to be replaced so it doesn't look too far ahead.