如何将Linux父目录与Java正则表达式匹配?

如何将Linux父目录与Java正则表达式匹配?,java,regex,Java,Regex,Linux路径是。/../test/test/mydirectory/.. 我试图用这个正则表达式删除所有的。/ [s{/}] 但这会删除所有特殊字符 我只想删除。/../../../../../../并保留实际路径 String result = path.replaceAll("[s{/././///}]",""); 我希望正则表达式能够识别所有可能的。/../../../../../../空父目录,并且只保留真正路径名开始的真正目录 仅在字母开头处开始您可以使用 s.replaceFi

Linux路径是
。/../test/test/mydirectory/..

我试图用这个正则表达式删除所有的
。/

[s{/}]

但这会删除所有特殊字符

我只想删除
。/../../../../../../
并保留实际路径

String result = path.replaceAll("[s{/././///}]",""); 
我希望正则表达式能够识别所有可能的
。/../../../../../../
空父目录,并且只保留真正路径名开始的真正目录

仅在字母开头处开始

您可以使用

s.replaceFirst("^(?:\\.{2}/)+", "")
模式匹配

  • ^
    -字符串的开头
  • (?:\\.{2}/)+
    -一次或多次重复:
    • \.{2}
      -两个点
    • /
      -斜杠

.replaceFirst
将找到模式的第一个匹配项,并将其替换为空字符串。

是一个特殊的正则表达式字符。如果你想把
当作一个普通字符,你必须对它进行转义。你可能需要
s.replaceFirst(“^(?:\.{2}/)+”,”)
是的,非常感谢。它工作得很好你真的想用正则表达式吗?为什么不
java.nio.file.Path
?因为它是字符串而不是路径对象。我必须进行类型转换并捕获类型转换异常。