Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^2: Can't match negated words.

by Roy Johnson (Monsignor)
on Jun 24, 2004 at 15:24 UTC ( #369393=note: print w/ replies, xml ) Need Help??


in reply to Re: Can't match negated words.
in thread Can't match negated words.

Putting dot-star next to an anchor is pointless. Just throw out the anchor and the dot-star. That leaves you with:

/\/\*((?:(?<!throw))/
You've got capturing parentheses around non-capturing parentheses, around a negative lookbehind. You only need the parens for the negative lookbehind:
/\/\*(?<!throw)/
Ok, now you've matched "/*", and at that point, you're looking back to ensure that what comes before you isn't "throw". It can't be, because it ends in "/*". You can't really check everything up to the "/*" with a negative lookbehind, because negative lookbehinds can't be variable-length, and your line can be. You can do it with negative lookahead:
if ($line =~ /^(?:(?!throw).)*?\/\*/)
That will be any number of characters that isn't the start of "throw", followed by "/*". The *? makes it take the first "/*" rather than the last.

Please see this node about YAPE::Regex::Explain for a helpful module.


We're not really tightening our belts, it just feels that way because we're getting fatter.


Comment on Re^2: Can't match negated words.
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (6)
As of 2015-07-31 06:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (274 votes), past polls