in reply to Re^2: Greedy modifier found to be working non-greedy in a named group
in thread Greedy modifier found to be working non-greedy in a named group

> both e* and e+ should have given same output. Why is the difference in output?

Good question, I think many are confused.

It's important to understand that empty matches exist and that e* means e{0}|e+ ( or something like e{0,32766} ° ).

So you are actually matching e{0} before all!

Printing out the match position of a capture group via @+ helps demonstrating it

DB<1> $_ = "This is a teeeext for testting"; DB<2> ;/(?<char>e*)/ and print "'$+{char}' is matched pattern at p +os $+[0]\n"; '' is matched pattern at pos 0 DB<3> ;/(?<char>e{0})/ and print "'$+{char}' is matched pattern at + pos $+[0]\n"; '' is matched pattern at pos 0 DB<4> ;/(?<char>e+)/ and print "'$+{char}' is matched pattern at p +os $+[0]\n"; 'eeee' is matched pattern at pos 15 DB<5> ;/(?<char>e{1,32766})/ and print "'$+{char}' is matched patt +ern at pos $+[0]\n"; 'eeee' is matched pattern at pos 15 DB<6>

update

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

°) yes there is an maximal upper bound in range quantifiers, which I expected to be around 2**16, so it's an incomplete analogy

Replies are listed 'Best First'.
Re^4: Greedy modifier found to be working non-greedy in a named group
by rsFalse (Chaplain) on Nov 30, 2019 at 15:05 UTC
    > ...and that e* means e{0}|e+ ( or something like e{0,32766} ° ).

    > So you are actually matching e{0} before all!


    And if the sentence begins with "e.."? :)
      Good catch!

      The order must be reversed to reflect the greed.

      DB<8> x 'eeeA1234eB' =~ /(e+|e{0})(.)/ 0 'eee' 1 'A' DB<9> x 'A1234eB' =~ /(e+|e{0})(.)/ 0 '' 1 'A' DB<10> x 'A1234eB' =~ /(e+)(.)/ 0 'e' 1 'B' DB<11>

      Thanks!

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

      Updates

      Improved demo code

Re^4: Greedy modifier found to be working non-greedy in a named group
by rkabhi (Acolyte) on Nov 29, 2019 at 12:59 UTC
    That was very good explanation.

    Thanks a lot !!

    Regards,
    Abhishek