Выражение отрицания с просмотром вперед может быть полезно как для фильтрации целых строк по наличию в них подстрок так и подстрок. Отрицаем всю строку по наличию в ней подстроки «404»:
1 | /^(?!.*404).*\.php/gm |
результат:
https://regex101.com/r/7fUL1u/1
А чтобы отсечь только точные совпадения подстрок, а именно только файл 404.php чуточку изменим регулярку:
1 | /^(?!404).+\.php$/gm |