Java 通过使用创建的正则表达式删除unix路径中的unneccesarry path transveral。和

Java 通过使用创建的正则表达式删除unix路径中的unneccesarry path transveral。和,java,regex,Java,Regex,这个路径(str=/tmp/a/b/12-3/ab-c/1-23/../../../real/env.sh)有一些不必要的/ab-c/1-23/../../..我想用java中的regex来删除它。我尝试了多重正则表达式,但它不起作用。认为ReGEX是一个解决所有字符串问题的方法不是一个好主意。在您的情况下,最好使用该类: String path=“/tmp/a/b/12-3/ab-c/1-23/。/../real/env.sh”; 字符串canonical=新文件(路径).getCanonic

这个路径
(str=/tmp/a/b/12-3/ab-c/1-23/../../../real/env.sh)
有一些不必要的
/ab-c/1-23/../../..
我想用java中的regex来删除它。我尝试了多重正则表达式,但它不起作用。

认为ReGEX是一个解决所有字符串问题的方法不是一个好主意。在您的情况下,最好使用该类:

String path=“/tmp/a/b/12-3/ab-c/1-23/。/../real/env.sh”;
字符串canonical=新文件(路径).getCanonicalPath();
//“/tmp/a/b/12-3/real/env.sh”
System.out.println(规范);
但我只是想告诉你,这里有一种使用正则表达式的可能方法:

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(路径);

我尝试了多个regex
。。。请包括您尝试的Java代码,并向我们显示清晰的输入和预期的输出。感谢您通知canonicalPath,这会更好