Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

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.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2016-10-24 09:39 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (304 votes). Check out past polls.