Java Regex:删除最后一个字符后的所有内容

rya*_*dlf 2 java regex

说我有一个字符串:

/first/second/third
Run Code Online (Sandbox Code Playgroud)

我希望在/的最后一个实例之后删除所有内容,因此我最终会:

/first/second
Run Code Online (Sandbox Code Playgroud)

我会用什么正则表达式?我试过了:

String path = "/first/second/third";
String pattern = "$(.*?)/";
Pattern r = Pattern.compile(pattern2);
Matcher m = r.matcher(path);
if(m.find()) path = m.replaceAll("");
Run Code Online (Sandbox Code Playgroud)

rge*_*man 10

为什么要在这里使用正则表达式?寻找最后一个/角色lastIndexOf.如果找到了,那就用substring它来提取它之前的所有东西.


Pet*_*rey 5

你的意思是这样的吗?

s = s.replaceAll("/[^/]*$", "");
Run Code Online (Sandbox Code Playgroud)

或者如果您使用路径更好

File f = new File(s);
File dir = f.getParent(); // works for \ as well.
Run Code Online (Sandbox Code Playgroud)