$RLine = "R.N. Raox, J. Pure and Appl. Phys."; $Jrnl = "Appl. Phys."; if( $RLine =~ /^(.*?(?:(?: and| &)(*SKIP)(*FAIL))?) (\Q$Jrnl\E)$/ ){ print "11: $1\n"; print "22: $2\n"; print "Matched\n"; } else { print "Not Matched\n"; } #### $RLine = "R.N. Raox, J. Pure and Appl. Phys."; #Should not match -> Pattern OK $RLine = "R.N. Raox, J. Pure text Appl. Phys."; #Should match -> Pattern OK $RLine = "R.N. Raox, J. Pure and text Appl. Phys."; #Should match but it is not -> Pattern NOT OK $RLine = "R.N. and Raox, J. Pure text Appl. Phys."; #Should match but it is not -> Pattern NOT OK