in reply to Explain a regexp matched group result

Edumacation (I hope, anyway) by example :-)

#!/usr/bin/perl use 5.016; use warnings; # 1060027 my $string = "aacbbbcac"; my $re1 = qr/((a+)?(b+)?(c))*/; my $re2 = qr/(a.*?)(b.+?)(c)(.*)/; # ADDED ON SUSPICION THAT OP'S REG +EX FU # MIGHT BE INCREMENTED BY THIS EXA +MPLE if ($string =~ $re1) { say "Here are the captures: $1, $2, $3)\n"; # ADDED line foreach (0..$#-) { printf "Group %d: <%s>\n", $_, substr($string, $-[$_], $+[$_] - $- +[$_]); } } say "\n"; if ( $string =~ $re2 ) { say "USING \$re2, here are the captures \$1..\$4: $1, $2, $3, $4)\ +n"; foreach (0..$#-) { printf "Group %d: <%s>\n", $_, substr($string, $-[$_], $+[$_] - $- +[$_]); } } =head #ONLY the "ADDED" lines are changed from OP's original Here are the captures: ac, a, bbb) Group 0: <aacbbbcac> Group 1: <ac> Group 2: <a> Group 3: <bbb> Group 4: <c> USING $re2, here are the captures $1..$4: aac, bbb, c, ac) Group 0: <aacbbbcac> Group 1: <aac> Group 2: <bbb> Group 3: <c> Group 4: <ac> =cut

Replies are listed 'Best First'.
Re^2: Explain a regexp matched group result
by jdd (Acolyte) on Oct 28, 2013 at 19:46 UTC
    Thank you very much to you too, now I understand -;