Обнаружение файлов с порядковым номером в имени файла

Я хочу реализовать функцию, которая импортирует несколько файлов с порядковым номером.
Если имена файлов что-то вроде aaa_000, aaa_001, я могу разделить их по знаку подчеркивания и взять номер. Но когда имена файлов не соответствуют этому шаблону, я не знаю, как это лучше сделать.
Имена файлов могут быть a_aa_000, a00a_000, a_0_000 , aaa000, a_aa000 и заканчиваться цифрой.


Обновление:
я нашел способ добиться этого, найдя последний нечисловой символ, символы перед ним будут общим именем.


person Ives    schedule 15.08.2018    source источник
comment
Просто разделить на последнее подчеркивание?   -  person RobAu    schedule 15.08.2018
comment
Если вам нужна только последняя часть числа, вы можете использовать подстроку в сочетании с lastIndexOf: filename.substring(filename.lastIndexOf(_)+1);   -  person Ralf Renz    schedule 15.08.2018
comment
@RobAu Извините, я не пояснил, подчеркивание не требуется для имени.   -  person Ives    schedule 15.08.2018
comment
Так имя может быть любым? Или он будет заканчиваться цифрой? Или содержать число? См. здесь: stackoverflow .com/questions/372148/   -  person RobAu    schedule 15.08.2018
comment
@RobAu Это закончится цифрой.   -  person Ives    schedule 15.08.2018
comment
Чего вы хотите добиться здесь? Вы хотите импортировать только определенные файлы, имена которых соответствуют шаблону, или вы хотите импортировать несколько файлов и определять, какие из них принадлежат друг другу, на основе их имен?   -  person Joakim Danielson    schedule 15.08.2018


Ответы (1)


В дополнение к тому, что упоминал @Robabu, измените свой шаблон, включив в него «$», чтобы он соответствовал только шаблону, заканчивающемуся строкой. Ниже код работает для всех тестовых входных данных, которые вы упомянули выше.

Pattern intsOnly = Pattern.compile("\\d+$");
Matcher makeMatch = intsOnly.matcher("a_aa000");
makeMatch.find();
String inputInt = makeMatch.group();
System.out.println(inputInt);
person Goblin    schedule 15.08.2018