我正在尝试使用正则表达式将"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+)\\.\\./", "");
但它没有成功
答案 0 :(得分:3)
你不能使用正则表达式(是的,像你的例子这样的简单情况可能会起作用,但是对于更复杂的模式会很快崩溃)。由于您使用java,请查看java.net.URI.normalize()
:
规范化此URI的路径...如果“..”段前面有非“..”段,则删除这两个段。重复此步骤,直到不再适用。 ...