我需要检查文件名是否以gzip扩展名结尾。具体来说,我正在寻找两个扩展名:".tar.gz"和".gz"。我希望使用一个正则表达式捕获文件名(和路径)作为一个组,如果有gzip扩展名,则排除它。
我在此示例路径上测试了以下正则表达式:
String path = "/path/to/file.txt.tar.gz";
Expression 1:
String rgx = "(.+)(?=([\\.tar]?\\.gz)$)";
Expression 2:
String rgx = "^(.+)[\\.tar]?\\.gz$";
以这种方式提取第一组:
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
的表达式所捕获。 - Captain Man[\\.tar]
应该改为(\\.tar)
,因为[...]
表示字符组。 - aioobe