c:\@Work\Perl>perl -wMstrict -le "use 5.010; ;; my $j = quotemeta 'Appl. Phys.'; ;; LINE: for my $l ( 'R.N. Raox, J. Pure and Appl. Phys.', 'R.N. Raox, J. Pure & Appl. Phys.', 'R.N. Raox, J. Pure or Appl. Phys.', 'R.N. Raox, J. Pure and or Appl. Phys.', 'N.E. One, Fly Fishing and Appl. Phys.', 'N.E. One, Fly Fishing or Appl. Phys.', ) { next LINE unless $l =~ m{ (?> (?> and | &) \s+ $j (*SKIP)(*F))? \s+ $j }xms; print qq{match: '$l'}; } " match: 'R.N. Raox, J. Pure or Appl. Phys.' match: 'R.N. Raox, J. Pure and or Appl. Phys.' match: 'N.E. One, Fly Fishing or Appl. Phys.'