Регулярное выражение для включения некоторых файлов, но с одним исключением

#regex

#регулярное выражение

Вопрос:

Я хотел бы регулярное выражение, которое включает все имена файлов с определенным окончанием, например, «.err», но не в том случае, если это имя файла начинается, например, с «test». Другими словами, включите «* .err»-файлы, но не «test-whatever.err»-файлы.

Я обнаружил, что

     (?!test.*.err$).*.err 
  

исключает тестовые файлы * .err и это

     .*.err 
  

включает все файлы * .err, но мне нужны они оба в одном выражении.

Также необходимо учитывать тот факт, что «.err» может быть записан как «.ERR» или «.Err», чтобы это регулярное выражение работало правильно для меня.

Все мысли и идеи приветствуются!

С уважением Рикард

Комментарии:

1. Вы должны указать язык, на котором вы используете регулярное выражение. Это даже написано в описании тега Regex.

Ответ №1:

Используйте это

 ^(?i)(?!test).*.err$
  

Смотрите его здесь онлайн на Regexr

Важные части, которые отличаются от ваших:

Используйте якоря. ^ и $ привязывают ваш шаблон к началу и концу строки

(?i) делает его «ignorecase», так что err это также будет соответствовать «ERR» или «ErR», а test также будет соответствовать «Test» и TEST …

Вы не указали язык, но эти функции должны работать с большинством вариантов.

Ответ №2:

Как насчет этого:

 ^(?!test).*.err$