您好我是reg表达式的新手,我正在尝试重命名复杂的文件名,如下所示:
3-M-COLORADOW-22017DB-LABEL
我想使用java reg表达式将此文件名重命名为:
3-M-COLORADOW-LABEL
然而,根据我目前对Java Reg表达式的了解,我只能做到这一点:
我尝试了很多组合但没有成功。我只需要帮助找到正确的java reg表达式组合来实现我的目标。基本上我正试图采取其中一个(破灭)。任何帮助将不胜感激。
for(File file:filesInDir) {
//x++;
String name = file.getName();
String newName = name;
String sameName = name;
if (name.contains("LABEL")){
newName = sameName.replaceAll("(.*)-(.*)(-LABEL)", "$1$3") ;
System.out.println(newName); // prints prints to file
String newPath = absolutePathOne + "\\" + newName;
file.renameTo(new File(newPath));
}
}
答案 0 :(得分:2)
您可以将replaceAll用于以下组:
String str = "3-M-COLORADOW-22017DB-LABEL".replaceAll("(.*)-(.*)(-LABEL)", "$1$3");
输出
3-M-COLORADOW-LABEL
答案 1 :(得分:1)
由于您没有提供有关文件名结构的大量信息,因此我假设您要过滤掉后跟字母的数字。您可以使用以下正则表达式:
(.*)-\d+\D+(-.*) // java-syntax: "(.*)-\\d+\\D+(-.*)"
Matcher
。
Pattern pattern = Pattern.compile("(.*)-\\d+\\D+(-.*)");
Matcher matcher = pattern.matcher(oldFilename);
if (matcher.matches) {
String newFilename = m.group(1) + m.group(2);
}