http://www.perlmonks.org?node_id=1067674


in reply to Re^4: Perl RE; how to capture, and replace based on a block?
in thread Perl RE; how to capture, and replace based on a block?

Hi Chris

just a quick example on greedy and non greedy quantifiers, under the Perl debugger:

DB<1> $string = "foo bar foo bar foo"; DB<2> x $string =~ /(fo.*ar)/ 0 'foo bar foo bar' DB<3> x $string =~ /(fo.*?ar)/ 0 'foo bar' DB<4>
As you can see the default "*" quantifier is greedy, so that the regex tries to match as much as possible. Using the modified "*?" quantifier, the regex becomes non greedy. You will see the same type of result if you try the "+" and the "+?" quantifiers.

Replies are listed 'Best First'.
Re^6: Perl RE; how to capture, and replace based on a block?
by taint (Chaplain) on Dec 18, 2013 at 20:18 UTC
    Thanks Laurent_R for the help.

    Your example helps better explain why I got the impression Perl was not greedy, the way sed is. Most all the examples I read in the perldocs, used .*?. But my experiments, and re-training myself with Perl RE's. Seems to show, once I get out of the sed habits. Perl will be a lot more flexible, and powerful. I should have started this a l-o-o-n-g time ago. :P

    Thanks again, Laurent_R. I really appreciate it.

    --Chris

    Yes. What say about me, is true.