$ perl -E ' my $re = qr{(\w+)((?:\s*\d+\s*)*)}; my $str = "a 1 2 3 b 4 5 6"; while ($str =~ /$re/g) { say "$&: $1 $2"; } ' a 1 2 3 : a 1 2 3 b 4 5 6: b 4 5 6