我正在尝试基本上尝试通过使用正则表达式将"dir1/dir2/../dir3"转换为"dir1/dir3",如下所示:

filePath.replaceAll("^(\\w)?(<>:\"/\\|?*)//\\.\\./", "");


我在这里做错了什么?

我知道有很多规范化规则,但是我只想应用这两个规则:

All "." segments are removed.

If a ".." segment is preceded by a non-".." segment then both of these segments are removed. This step is repeated until it is no longer applicable.


我也尝试过:

result = filePath.replace("^(\\w+)\\.\\./", "");


但也没有成功

最佳答案

您不能为此使用正则表达式(是的,像您的示例这样的简单情况可能会起作用,但会很快分解为更复杂的模式)。由于您使用的是Java,因此请查看java.net.URI.normalize()


  规范化此URI的路径...如果“ ..”段之前是非“ ..”段,则这两个段都将被删除。重复此步骤,直到不再适用。 ...

10-07 16:31
查看更多