作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当前删除多条斜线的代码是
path = path.replaceAll("/{2,}", "/");
这变成了https://stackoverflow.com到 https:/stackoverflow.com,这不是故意的。
我做了一些研究,想出了否定后视来忽略之前有 https:
的双斜杠,但它只匹配双斜杠,而不匹配三重斜杠或更多:
(?<!http\/\/)
我想如果你可以否定一个“子”正则表达式,它可能是这样的,意思是匹配(双斜杠或更多斜杠)但不匹配前面有 https: 的 2 个斜杠。
\/{2,}.negate(https:(?=\/\/))
这可能吗?
最佳答案
您对负面回顾的想法是正确的,但您不应该在回顾中包含斜杠本身。您希望在所有情况下都匹配多个斜杠,但否定的后视表示“如果前面的文本是 http:
,则忽略它。所以它会像
(?<!http:)/{2,}
找到您要替换的所有斜杠。当然,您可能希望包括其他协议(protocol),例如 https:
和 ftp:
之类的东西。
(?<!(http:|https:|ftp:))/{2,}
关于Java 正则表达式 : How to replace double or more slashes with a single slash but ignoring http://or https://,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55662043/
我是一名优秀的程序员,十分优秀!