$_ = "[part1-date] info - [..part2..] [..part3..] part4"; $part = qr /\[(.+?)]/; # subregex using non-greedy quantifier (slightly easier than /\[([^]]+)\]/) print "$1 $2 $3" if /$part \w+ - $part $part \w+/; # prints "part1-date ..part2.. ..part3.."