0

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

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

错误在哪里?

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

4

4 回答 4

0

我会简单地使用:"\\.+\\w+"作为正则表达式:

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

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

\\w+是一个预定义的正则表达式字符类,它表示,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"
于 2013-11-08T14:32:06.947 回答
0

尝试这个:

String path = path.replaceAll("(/.)*[a-zA-Z]*", "")
于 2013-11-08T14:29:48.137 回答
0

回答

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

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

正则表达式可视化

调试演示

给你的代码

path = path.replaceAll("(?i)\\.[^.\\\\/:*?\"<>|\r\n]+$", "");
于 2013-11-08T14:33:44.137 回答
0

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

"[^.\\/]+?\\.[^.]+$"
于 2013-11-08T14:31:02.223 回答