Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Re: Re: Common Regex Gotchas

by chromatic (Archbishop)
on Nov 27, 2001 at 04:47 UTC ( #127677=note: print w/ replies, xml ) Need Help??


in reply to Re: Re: Common Regex Gotchas
in thread Common Regex Gotchas

Why doesn't the engine continue backwards past the whitespace and look for a <\/tag> string?

Because the engine prefers the longest match that starts at the leftmost possible position. When it hits .*, it jumps all the way to the end of the string and then backtracks, trying to match the next necessary character. Because it's backtracking, it matches </tag> at the end of the string. That fits the pattern, so it doesn't continue backtracking to find a shorter match.

If, when creating the example string, I carraige return after the <\/tag>, there shouldn't be a whitespace to match on, right?

The /s flag allows the '.' token to match newlines. Adding the minimal token '?' avoids the jump-to-end-then-backtrack behavior. It works like you'd expect, trying to match as few characters as possible.

Does that clear it up? I've also touched up the formatting somewhat.


Comment on Re: Re: Re: Common Regex Gotchas

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (11)
As of 2015-07-03 09:25 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 (51 votes), past polls