Я хочу исключить все файлы в каталоге с именем файла в форме [.*].[a-z]{3,4}.bak. Если имя файла, например, «hello.txt» или «hello.xlsx», его следует включить. Я создал шаблон ^([^.]+)(\\.)([a-z]{3,4})$, который, кажется, правильно работает для моего случая, но мне нужно убедиться в правильности приведенного выше шаблона. Пожалуйста, дайте мне знать, есть ли лучший шаблон для обработки этого сценария.
Действительный случай (файлы должны быть включены):
Недопустимый случай (файлы должны быть исключены)
Используйте инструменты для проверка регулярных выражений и напишите unit tests.
Вы рассматривали что-то вроде filename.endsWith('.bak') ?
@khelwood Реализация FileNameFilter использует name.matches и не может быть изменена
@PushpeshKumarRajwanshi Действительный случай (файлы должны быть включены) Hello.xls hello.xlsx Недопустимый случай (файлы должны быть исключены) hello.txt.bak hello.xlsx.bak




Это сработало для меня
^[^.]+.[A-z]{3,4}(?!.*.bak)
Спасибо Michal Ziober за инструмент.
https://regex101.com/r/HBVs2p/3
[A-z] содержит не только буквы, взгляните на таблицу ASCII, чтобы увидеть, что находится между Z и a
Почему у вас нет
.bakв конце регулярного выражения? Также, пожалуйста, разместите несколько действительных/недействительных образцов.