#!perl -w use strict; use Data::Dumper; my $string=q{C*ID1*Mac*C release for EA's D*ID1*Spore1 game*D; D*ID1*Spore 1*D is better than D*ID2*Spore 2 game*D.}; my @sections; while( $string =~ m!(([CD])\*(.*?)\*\2)!g) { push @sections, $1; }; print Dumper \@sections; __END__ $VAR1 = [ 'C*ID1*Mac*C', 'D*ID1*Spore1 game*D', 'D*ID1*Spore 1*D', 'D*ID2*Spore 2 game*D' ];