使用创建的regex删除unix路径中不正确的横向路径和



此路径(str = /tmp/a/b/12-3/ab-c/1-23/../../real/env.sh)有不正确的/ab-c/1-23/../..,我想通过java中的regex将其删除。我尝试了多种正则表达式模式,但不起作用。

认为regex是所有字符串问题的解决方案不是一个好主意。在您的情况下,最好使用File类的getCanonicalPath()

String path = "/tmp/a/b/12-3/ab-c/1-23/../../real/env.sh";
String canonical = new File(path).getCanonicalPath();
// "/tmp/a/b/12-3/real/env.sh"
System.out.println(canonical);

但为了向您展示,这里有一种使用正则表达式的可能方法:

String path = "/tmp/a/b/12-3/ab-c/1-23/../../real/env.sh";
while (path.matches("^.*\/\.{2}.*$")) {
path = path.replaceFirst("\/[\w-]+\/\.{2}", "");
}
// "/tmp/a/b/12-3/real/env.sh"
System.out.println(path);

最新更新