Я пытаюсь установить проверку для неповторяющихся имен файлов, если какой-то файл повторяется, это должно быть написано так:
Так что первый я могу сделать, а все остальные как взять?.
Я получу список всех документов с именами файлов раньше, поэтому теперь я пытаюсь сделать так для каждого документа, но я не знаю, как сделать регулярное выражение для его получения.
FILENAME_1.PDF -> REGEX() -> ПОЛУЧИТЬ ВОЗВРАТ -> 1
ОБНОВИТЬ
Если у меня есть эти файлы в моем bbdd: [filename.pdf, filename_1.pdf, filename_2.pdf].
Мне нужно, когда кто-то загружает новые файлы на основе этих файлов, мое новое имя будет filename_3.pdf, если существует имя файла 2.
ИМЯ ФАЙЛА_ВЕРСИЯ.РАСШИРЕНИЕ
Исходя из этого, мне нужно получить версию последнего имени файла. Спасибо!
Примечание. Будут разные имена файлов, например FILANEM_FILENAM_VERSION.pdf.
Спасибо вам!
Не могли бы вы добавить ожидаемый результат для вашего примера? «Значит, я могу сделать первый, а все остальные как взять?» Эта фраза неясна. Вы хотите получить всю копию первой или только первую и игнорировать копию?
Я не могу использовать hashmap, только имя файла. @Амонгален
Я хочу получить последнюю версию копий, для создания новой, с увеличенной версией. Я обновлю свой ответ. @винкришо
Почему вы can't используете hashmap? Это какое-то домашнее задание или что-то в этом роде? Может быть, взгляните на это регулярное выражение, которое находит уникальные результаты: stackoverflow.com/questions/13613813/…
_(\d+)\.[^.]+$ извлечет число (оно фиксирует число, которое предшествует последней точке в имени файла и следует за символом подчеркивания, вы можете попробовать здесь). Я действительно не уверен, как это поможет решить вашу проблему.
Откуда вы знаете, что имя файла не содержит цифр? Файл нельзя назвать filename_1.pdf? Его копия будет filename_1_1.pdf
вот почему мне нужно регулярное выражение, каждый файл с NAME_version.PDF будет таким же с увеличенной версией, поэтому это должно быть filename_2.pdf, а не filename_1_1.pdf @Amongalen
не получаю версию имени файла, простите @Aaron, это регулярное выражение Java?
@AlbertoAcuña Я добавил ответ со ссылкой на ideone с кодом Java.




Я бы использовал следующее регулярное выражение:
_(\d+)\.[^.]+$
Или в Java:
_(\\d+)\\.[^.]+$
Регулярное выражение захватывает число между подчеркиванием и последней точкой в имени файла.
Число, которое вы ищете, захвачено в первой группе захвата и должно быть извлечено с помощью Matcher.group.
Вы можете попробовать это здесь :
No version found in filename.pdf
No version found in filename1.pdf
filename_1.pdf - version found : 1
filename1_2.pdf - version found : 2
No version found in filename_1.test.pdf
filename_1.test_2.pdf - version found : 2
No version found in filename_1
Почему вы хотите сделать это с помощью регулярного выражения? Просто используйте хэш-карту с вхождениями файлов - <name, count>. Не усложняйте простую задачу.