/(\d\s+foo)[^\r\n]*(\d\s+foo)/ #### my $re = qr/\d\s+foo/; sub match { local $_ = shift; /(\d\s+foo)[^\r\n]*\1/x and print "1\n"; /\d\s+foo [^\r\n]*\d\s+foo/x and print "2\n"; /($re) [^\r\n]*\1/x and print "3\n"; /$re [^\r\n]*$re/x and print "4\n"; } match '4 foo4 foo'; ## easily matched match '4 foo5 foo'; ## a bit trickier __OUTPUT__ 1 2 3 4 2 4