Вот небольшой код, который я написал для FileFilter, используя регулярное выражение. Его цель - сопоставить загруженные файлы журналов и увеличить индекс по имени файла. Я хотел бы не беспокоиться о чем-либо в имени файла и просто принять его как строковый литерал, не обращаясь к имени файла, экранируя символы, которые имеют значение для сопоставления с регулярным выражением.
mylog.log
MyLog-1.log
MyLog-2.log
public boolean accept(File file) {
Pattern pattern = Pattern.compile(filenameWithoutExtension + "-*[0-9]*." + extension);
Matcher matcher = pattern.matcher(file.getName());
return matcher.matches();
}
У меня вопрос: если имя файла содержит круглые скобки, это не сработает, так как круглые скобки означают что-то особенное для сопоставителя шаблонов.
MyLog (копия) .log
Я бы хотел заключить в filenameWithoutExtension нотацию с надписью «Сопоставьте эту строку, игнорируя в ней все, что в противном случае могло бы быть синтаксисом сопоставления с образцом.