in reply to Re: How do I reference repeated capture groups?
in thread How do I reference repeated capture groups?
NB: Using the same precompiled regexes each time.
use v5.12; use warnings; use Data::Dump; my $re_start = qr{(?<start>\w+)\s*}; my $re_repeat = qr{\s*(?<repeat>\d+)\s*}; my $str = 'a 1 2 3 b 4 5 6'; while ( $str =~ /\G$re_start/g ) { print "$+{start}: "; while ( $str =~ /\G$re_repeat/gc ) { print "$+{repeat} "; } print "\n"; } my @res; $str =~ / (?: $re_start (?{ push @res, $+{start} }) (?: $re_repeat (?{ push @res, $+{repeat} }) )* )* /gx; dd \@res;
a: 1 2 3 b: 4 5 6 ["a", 1, 2, 3, "b", 4, 5, 6]
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: How do I reference repeated capture groups?
by LanX (Saint) on Aug 13, 2022 at 21:15 UTC |