$ perl -Mstrict -Mwarnings -E 'while (<>) { if (/my background error (\d+): ((?!.*my3\.exe).+)/ ) { say qq{$1 = \"$2\"} } else { say q{NO MATCH} } }' blah blah my background error 1234: blah blah 1234 = "blah blah" blah blah my background error 1234: blah blah my3.exe blah NO MATCH blah blah my background error 1234: blah blah my4.exe blah 1234 = "blah blah my4.exe blah" blah blah my background error 1234: my3.exe NO MATCH blah blah my background error 1234:my3.exe NO MATCH blah blah my background error 1234: my4.exe 1234 = "my4.exe" ^C