in reply to Quantifiers in regular expressions
As a suggestion, this is something I had trouble with when I was learning regex. Non-greedy not only matches as little as possible, but it also *doesn't backtrack*; This is sort of an example that gave me trouble until I read about backtracking in the man page.
$string = "<foo>...</foo><bar>...</bar>"; # This matches <foo></bar>, not what we want. $string =~ /\<.*\>(.*)\</.*\>/; # this works, i think. $string =~ /\<.*?\>(.*?)\</.*?\>/;
Even if it doesn't work, I hope you get the idea. I'd show the exact example of what I was doing when I ran into this, but it's overly-complicated (removing parts of tags from a string, where there's a list of tags and attributes for those tags that need to be removed).
Greediness relies a lot on backtracking, so to avoid frustrating another fledgling perl coder with the same problems, it's at least worth a note wherever greediness is in issue.
|
---|
Replies are listed 'Best First'. | |
---|---|
RE: RE: Quantifiers in regular expressions
by pkn (Initiate) on Jul 20, 2000 at 04:19 UTC | |
by le (Friar) on Jul 20, 2000 at 11:30 UTC | |
by Anonymous Monk on Sep 24, 2002 at 23:05 UTC | |
Re: RE: Quantifiers in regular expressions
by ninja-joe (Monk) on May 19, 2004 at 19:59 UTC | |
by Roy Johnson (Monsignor) on May 19, 2004 at 20:25 UTC | |
Doubt in Quantifiers in regular expressions
by Anonymous Monk on Aug 16, 2002 at 11:26 UTC |