Требуемое регулярное выражение:
/^((?!TEMP_).)*\.jup$/
Основным отличием является то, что ваше регулярное выражение не привязано в начале строки, поэтому оно соответствует любой подстроке, удовлетворяющей вашим критериям - поэтому в примере TEMP_corrected.jup
подстроки corrected.jup
и EMP_corrected.jup
оба матч.
(Другое различие заключается в том, что, ставя ()
вокруг и заглядывания вперед, и .
, вы гарантируете, что TEMP_ не допускается нигде в строке, а не просто в начале. Не уверен, важно ли это для вас или нет!)
Если вы получаете файлы, отличные от .jup
files, тогда возникает другая проблема - ваше выражение должно соответствовать только файлам .jup
. Вы можете проверить свое выражение с помощью:
perl -ne 'if(/^((?!TEMP_).)*\.jup$/) {print;}'
затем введите строки: perl будет выводить их обратно, если они совпадают, а не если они не совпадают. Например:
$ perl -ne 'if(/^((?!TEMP_).)*\.jup$/) {print;}'
foo
foo.jup
foo.jup <-- perl printed this because 'foo.jup' matched
TEMP_foo.jup