/my background error (\d+):(?!.+my3\.exe)/
####
$ perl -Mstrict -Mwarnings -E 'while (<>) { if (/my background error (\d+):(?!.+my3\.exe)/ ) { say $1 } }'
blah blah my background error 1234: blah blah
1234
blah blah my background error 1234: blah blah my3.exe blah
blah blah my background error 1234: blah blah my4.exe blah
1234
blah blah my background error 1234: my3.exe
blah blah my background error 1234:my3.exe
1234
^C
####
/my background error (\d+): ((?!.*my3\.exe).+)/
####
$ 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