Java 使用正则表达式解析字符串

Java 使用正则表达式解析字符串,java,regex,split,Java,Regex,Split,我正在尝试删除字符串/home/user/test.dat 我使用String[]split=file.split((?!.*/)”但split[1]只返回第一个字符,而不是整个文件名。我该如何编辑我的正则表达式,使其返回超过最后一个正斜杠的所有内容 正则表达式 \/((\w+)\.(\w+))$ 但是,由于您使用的是Java,因此只需将字符串加载到File helper中即可拉出文件名: Java Path p = Paths.get("C:\\Hello\\AnotherFolder\

我正在尝试删除字符串
/home/user/test.dat
我使用
String[]split=file.split((?!.*/)”
但split[1]只返回第一个字符,而不是整个文件名。我该如何编辑我的正则表达式,使其返回超过最后一个正斜杠的所有内容

正则表达式

\/((\w+)\.(\w+))$

但是,由于您使用的是Java,因此只需将字符串加载到File helper中即可拉出文件名:

Java

Path p = Paths.get("C:\\Hello\\AnotherFolder\\The File Name.PDF");
String file = p.getFileName().toString();
Regex

\/((\w+)\.(\w+))$

但是,由于您使用的是Java,因此只需将字符串加载到File helper中即可拉出文件名:

Java

Path p = Paths.get("C:\\Hello\\AnotherFolder\\The File Name.PDF");
String file = p.getFileName().toString();

除非有令人信服的理由使用正则表达式,否则我将使用简单表达式。大概

String file = "/a/b/c/d/e/test.dat";
int afterSlash = file.lastIndexOf('/');
if (afterSlash > -1) {
    file = file.substring(afterSlash + 1);
}
System.out.println(file);
上述输出为(请求的)


除非有令人信服的理由使用正则表达式,否则我将使用简单表达式。大概

String file = "/a/b/c/d/e/test.dat";
int afterSlash = file.lastIndexOf('/');
if (afterSlash > -1) {
    file = file.substring(afterSlash + 1);
}
System.out.println(file);
上述输出为(请求的)


您可以发布您期望的结果的示例吗?我期望
test.dat
,而split[0]已经返回了它之前的所有内容。您需要在此处使用regex吗?可能会有更好的工具来获取文件名。如果您能告诉我更好的解决方案,我不会介意刷新页面并在顶部看到链接的副本。您能发布您期望的结果示例吗?我期望
test.dat
,而split[0]在它之前已经返回了所有内容。您需要在此处使用regex吗?可能有更好的工具来获取文件名。如果你能告诉我一个更好的解决方案,我不会介意用这篇文章刷新页面,并在顶部看到链接的副本。是的…如果你只想要文件名而不是使用lastIndexOf()方法…是的…如果你只想要文件名而不是使用lastIndexOf()方法。。。