java - 我怎样才能让 Java 检查字符串是否匹配从末尾开始的模式?

标签 java regex string

我有一个程序正在从文件中读取输入行,并且必须使用正则表达式从每一行中提取信息。每行都是我的应用程序创建的文件系统中文件或文件夹的绝对路径。每行具有以下格式:

/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 类及其 getNamegetParrent 方法。

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/

相关文章:

即时 Java ArrayList 和 HashMap

python - 将匹配的子字符串从列表中提取到 Python 中的新列表

JavaScript - 格式化长整数

ruby-on-rails - 如何在 ruby​​ 中使用 utf8 的正则表达式

java - 字符串操作编码建议

c++ - 带字符串或字符的动态分配(数组)

java - android中的sqlite3_open错误

java - 使用 Spring Util Schema 覆盖应用程序上下文中的 Bean 设置

java - hibernate 和锁定

.net - 正则表达式