Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Boolean operators in PERL regexp?

by ikegami (Patriarch)
on Feb 24, 2005 at 19:02 UTC ( [id://434196]=note: print w/replies, xml ) Need Help??


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.

Replies are listed 'Best First'.
Re^2: Boolean operators in PERL regexp?
by lenrobert (Initiate) on Feb 25, 2005 at 16:25 UTC
    Friedo, Enlinl, Ikegami, thank you for your responses.

    Yes, my problem might be easily solved with an HTML parser, but beyond my question in my opinion a logical NOT would be essential for regexps. Lookahead and lookbehind assertions are very good, the only fatal problem with them, that they are non-capturing, i.e. I cannot extract non-matching. Maybe there is a reason for this, I don't know.

    Robert
      Whatcha talking about?
      NOT /XYZ/ vvvvvvvvvvvvv >perl -e "$_ = 'ABCDEFGHIJKL'; print(/ABC((?:(?!XYZ).)*)JKL/);" DEFGHI
        Ikegami, you're right. As it seems I needed some more help to use your code. Now it works, the final version is:
        /(<a href=("|))((?:(?!("|\/|#|javascript)).)*)(\s|"|>)/gi
        And $3 is the value of the href property.
        Thank you.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://434196]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (6)
As of 2024-04-19 11:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found