gpt4 book ai didi

Java 正则表达式 : How to replace double or more slashes with a single slash but ignoring http://or https://

转载 作者:可可西里 更新时间:2023-11-01 17:17:16 24 4
gpt4 key购买 nike

当前删除多条斜线的代码是

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com