正则表达式替换路径中的文件名

时间:2013-11-08 14:24:22

标签: java regex

我正在尝试替换路径的“file.type”结尾,我已经编写了这个正则表达式但它似乎不起作用:

String path = otherPath.replaceAll("(.*)/[a-zA-Z]*/.[a-zA-Z]*", "")

错误在哪里?

示例:如果我有路径this / is / a / path / file.txt,那么我想使用上面的语句来生成路径:this / is / a / path /

4 个答案:

答案 0 :(得分:0)

试试这个:

String path = path.replaceAll("(/.)*[a-zA-Z]*", "")

答案 1 :(得分:0)

以下正则表达式可能适合您:

"[^.\\/]+?\\.[^.]+$"

答案 2 :(得分:0)

我只想使用:"\\.+\\w+"作为正则表达式:

String s = "file.type.type.type";

s = s.replaceAll("\\.+\\w+", "");
System.out.println(s); // print "file"

此处\\w+是正则表达式的predefined character clas,代表A word character: [a-zA-Z_0-9]

这将输出"file"一次删除所有".type"。但是,如果您只想从文件名中删除最后".type",那么最简单的方法是使用s.substring(0, s.lastIndexOf(".")),这将只删除文件名中的最后一个“.type”:

String s = "file.type.type.type";
s = s.substring(0, s.lastIndexOf(".")); // print "file.type.type"

答案 3 :(得分:0)

答案

根据RegexBuddy解析扩展名的库是以下正则表达式:

\.[^.\\/:*?"<>|\r\n]+$

Regular expression visualization

Debuggex Demo

代码

path = path.replaceAll("(?i)\\.[^.\\\\/:*?\"<>|\r\n]+$", "");