c:\@Work\Perl>perl -wMstrict -le "use Data::Dump qw(dd); ;; my $start = qr{ > \s* }xms; my $more = qr{ \G (?%PN1%', ' %DIMMM% %DIMINCH% ', ) { print qq{'$s'}; my @matches = $s =~ m{ (?: $more | $start) % ([^%]+) % $post }xmsg; dd \@matches; } " '%PN1%' ["PN1"] ' %DIMMM% %DIMINCH% ' ["DIMMM", "DIMINCH"]