对于此字符串dirPath
,
String dirPath = "c:/create/a/dir/very/deep/inside/../././../../../dir/";
我希望输出字符串看起来像:
"c:/create/a/dir/very/deep/inside/../../../../dir/";
我用过:
dirPath.replaceAll("/[.]/", "/");
但这给了:
c:/create/a/dir/very/deep/inside/.././../../../dir/
^^^
然后,尝试另外使用replaceAll
作为:
dirPath.replaceAll("/[.]/", "/").replaceAll("/[.]/", "/");
那行得通!
我的问题是,为什么一个电话不能达到相同的结果? 如何以最简单的方式实现它?
P.S。另一个不适用于我的正则表达式:.replaceAll("($|/)[.]/", "$1")
答案 0 :(得分:5)
您可以使用前瞻模式来避免消耗后续匹配所需的斜杠:
dirPath.replaceAll("/\\.(?=/)", "")