foo m 1 m 2 m 3 m 4 bar foo m 2 m 4 m 7 bar foo m 1 bar #### my (@match) = ($str =~ /^foo (?:m (\d+) )+bar/); #### my @match; if ($str =~ /^foo /) { while ($str =~ /m (\d+) /g) { push @match, $1; } }