my $line = 'marker '; my $rex = qr/(?:^marker\s|\G)<(.*?)>(?: |$)/g; my @matches = ($line =~ $rex); #### my @lines = ( 'notmarker ', 'marker ', 'notmarker ', ); foreach (@lines) { chomp; if (my @matches = (/(?:^marker\s|\G)<(.*?)>(?: |$)/g)) { print join(', ', @matches)."\n"; } }