$_ = 'fooxbarbar'; # Not greedy - why not? if(/(foo)(((?!bar).){1,5})bar/){ print "1 Matched:$1 $2\n"; } else{ print "1 Not Matched\n"; } # Greedy - as we'd expect if(/(foo)(?!bar)((.){1,5})bar/){ print "2 Matched:$1 $2\n"; } else{ print "2 Not Matched\n"; } # Not Greedy - as we'd expect if(/(foo)(?!bar)((.){1,5}?)bar/){ print "3 Matched:$1 $2\n"; } else{ print "3 Not Matched\n"; }