Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^3: How do I reference repeated capture groups?

by LanX (Saint)
on Aug 13, 2022 at 21:15 UTC ( [id://11146143]=note: print w/replies, xml ) Need Help??


in reply to Re^2: How do I reference repeated capture groups?
in thread How do I reference repeated capture groups?

to meet these explicit requirements, here an altered version.

NB: how similar those solutions look like in the end...

use v5.12; use warnings; use Data::Dump; my $str = 'a 1 2 3 b 4 5 6'; my $re_start = qr{(?<start>\w+)\s*}; my $re_repeat = qr{\s*(?<repeat>\d+)\s*}; # --- approach 1 with \G and /gc my @res1; while ( $str =~ /\G$re_start/g ) { push @res1, [$+{start}]; while ($str =~ /\G$re_repeat/gc) { push @{ $res1[-1] }, $+{repeat}; } } dd \@res1; # --- approach 2 with embedded (?{CODE}) my @res2; $str =~ / (?: $re_start (?{ push @res2, [$+{start}] }) (?: $re_repeat (?{ push @{ $res2[-1] }, $+{repeat} }) )* )* /gx; dd \@res2;

output
[["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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11146143]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (3)
As of 2024-03-29 07:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found