my $re = qr{ Digits: \s* (?:(? (?:(?\d) (?{ local @d = (@d, $+{digit}) }) )+ )(?{ $digits = \@d })) }x; 'hello, world, Digits: 123' =~ /$re/ and print "@$digits\n";