in reply to Extracting the number of repetitions from a regex
Lexicals don't work (right) in regex code blocks. If you switch to using globals, you'll get the results you are after:
my @strings = qw( aaabbbb ab abb aabb aaabb aabbb ); for my $string ( @strings ) { our $a_counter = 0; our $b_counter = 0; print "In $string there were $a_counter 'a's and $b_counter 'b's. +\n" if $string =~ /(a(?{$a_counter ++;}))+(b(?{$b_counter ++;}))+/; } __END__ C:\test>junk In aaabbbb there were 3 'a's and 4 'b's. In ab there were 1 'a's and 1 'b's. In abb there were 1 'a's and 2 'b's. In aabb there were 2 'a's and 2 'b's. In aaabb there were 3 'a's and 2 'b's. In aabbb there were 2 'a's and 3 'b's.
There is a warning about this in one of the regex pods.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Extracting the number of repetitions from a regex
by pat_mc (Pilgrim) on Dec 18, 2008 at 20:40 UTC | |
by ikegami (Patriarch) on Dec 18, 2008 at 21:03 UTC | |
by pat_mc (Pilgrim) on Dec 19, 2008 at 10:56 UTC |