Мне нужно проверить, заканчивается ли имя файла расширением gzip. В частности, я ищу два расширения: «.tar.gz» и «.gz». Я хотел бы записать имя файла (и путь) в качестве группы, используя одно регулярное выражение, исключая расширение gzip, если оно есть. я проверил следующие регулярные выражения на этом примере путиРасширение файла Java Regex
String path = "/path/to/file.txt.tar.gz";
Expression 1:
String rgx = "(.+)(?=([\\.tar]?\\.gz)$)";
Выражение 2:
String rgx = "^(.+)[\\.tar]?\\.gz$";
Извлечение группы 1 в этом путь:
Matcher m = Pattern.compile(rgx).matcher(path);
if(m.find()){
System.out.println(m.group(1));
}
Оба регулярных выражений дает мне один и тот же результат: /path/to/file.txt.tar
и не /path/to/file.txt
. Любая помощь будет оценена по достоинству.
Заранее спасибо
Если вы ищете '.tar. gz' и '.gz', вы не просто ищете' .gz'? Все '.tar.gz' будут пойманы выражением, которое ловит' .gz'. –
Незначительный комментарий. Ваш '[\\. Tar]' должен, вероятно, быть '(\\. Tar)', поскольку '[...]' представляет собой группу символов. – aioobe