对于这个字符串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("/[.]/", "/");
成功了!
我的问题是为什么一次调用不能达到相同的结果? 如何用最简单的方式实现?
附言另一个对我不起作用的正则表达式:.replaceAll("($|/)[.]/", "$1")
最佳答案
您可以使用先行模式来避免消耗后续匹配所需的斜线:
dirPath.replaceAll("/\\.(?=/)", "")
关于java - 用单斜线 '/./' 替换斜线之间的点,即 '/',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53219875/