的Java reg表达式不包括(非字字符)
问题描述:
您好我是新来reg表达式中,我试图重新命名像下面这样一个复杂的文件名:的Java reg表达式不包括(非字字符)
3-M-COLORADOW-22017DB-LABEL
我想用重命名文件名添加到该java的reg表达式中:
3-M-COLORADOW-LABEL
但是与Java注册表达我目前的知识开始我只得到了这一步:
我已经尝试了许多组合,但没有成功。我只是需要帮助找到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));
}
}
答
可以使用的replaceAll与团体是这样的:
String str = "3-M-COLORADOW-22017DB-LABEL".replaceAll("(.*)-(.*)(-LABEL)", "$1$3");
输出
3-M-COLORADOW-LABEL
答
因为你没有给有关该结构多的信息你的文件名,我会假设你想过滤数字后面跟字母。您可以使用以下正则表达式:
(.*)-\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);
}
对不起将发布它上面 – Jonathan
你可以请编辑您的问题@JonathanHofler在注释中的代码无法读取! –
我用上面给出的解决方案之一发布了我的代码。 – Jonathan