我有一个程序正在从文件中读取输入行,并且必须使用正则表达式从每一行中提取信息。每行都是我的应用程序创建的文件系统中文件或文件夹的绝对路径。每行具有以下格式:
/root/folder1/folder2/folder3
我需要做的是将 String
分成一个数组,其中包含路径的第一部分,然后是最后一个文件夹,如下所示:
["/root/folder1/folder2", "folder3"]
我的想法是将正则表达式与 java.util.regex.Pattern#split(CharSequence, int)
方法结合使用,使用 Pattern while 拆分字符串限制结果数组的大小。但是,由于此方法将模式与从开头开始的字符串匹配,因此此方法对我不起作用。我需要一些具有类似功能的东西来检查 String
是否从结尾而不是开头开始匹配。要么,要么我需要一个正则表达式向导来帮助我编写一个新的正则表达式来完成此任务。
现在,我正在使用简单的正则表达式 "[/]"
来拆分字符串。
提前致谢。
最佳答案
来自您的评论
Yes, regex-less approaches are also acceptable
看起来您可以简单地使用 File
类及其 getName
和 getParrent
方法。
File f = new File("/root/folder1/folder2/folder3");
String[] data = {f.getParent(), f.getName()};
System.out.println(data[0]);
System.out.println(data[1]);
输出:
\root\folder1\folder2
folder3
这里唯一潜在的问题是你会得到 \
而不是 /
但是如果你打算在 Java 中使用这些路径,这不会给你带来任何问题,因为 Java接受两个分隔符。如果不是,您可以轻松地将它们改回
String[] data = {f.getParent().replace('\\','/'), f.getName()};
关于java - 我怎样才能让 Java 检查字符串是否匹配从末尾开始的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29734436/