Я должен проверить, заканчивается ли имя файла расширением gzip. В частности, я ищу два расширения: ".tar.gz" и ".gz". Я хотел бы зафиксировать имя файла (и путь) как группу, используя одно регулярное выражение, исключая расширение gzip, если оно есть. Я протестировал следующие регулярные выражения на этом примере пути
String path = "/path/to/file.txt.tar.gz";
Выражение 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
. - person Captain Man   schedule 12.05.2015[\\.tar]
, вероятно, должен быть(\\.tar)
, так как[...]
представляет группу символов. - person aioobe   schedule 12.05.2015