gpt4 book ai didi

正则表达式匹配golang中不以www开头的字符串

转载 作者:IT王子 更新时间:2023-10-29 02:36:16 88 4
gpt4 key购买 nike

我有以下正则表达式 ^http:\/\/(?!www\.)(.*)$

预期行为:

http://example.com - Match
http://www.example.com - Does not match

看起来 golang 不支持负前瞻。我如何重写此 RegEx 以在 golang 上工作?

更新

我没有使用 golang 编码,我使用的是 Traefik接受正则表达式(golang 风格)作为配置值,所以基本上我有这个:

regex = "^https://(.*)$"
replacement = "https://www.$1"

我想要的是始终将 www. 添加到 URL,但如果 URL 已经存在,则NOT,否则它会变成 www.www。 *

最佳答案

如果你真的一心想手动创建一个否定的前瞻,你需要在正则表达式中排除所有可能的 w:

^https?://(([^w].+|w(|[^w].*)|ww(|[^w].+)|www.+)\.)?example\.com$

此正则表达式允许在 example.com 之前带点的任何单词,除非该单词只是 www。它通过允许任何不以 w 开头的词来做到这一点,或者,如果它以 w 开头,它要么只是那个 w 要么跟在后面通过非 w 和其他东西。如果它以两个 w 开头,那么它必须是那个或后面跟着一个非 w。如果它以 www 开头,则必须后跟一些内容。

Demo

澄清使这变得容易得多。该方法是始终(可选)匹配 www. 然后始终将其放回替换中:

搜索:

^http://(?:www\.)?(.*)\b$

替换:

http://www.$1

Demo 2

关于正则表达式匹配golang中不以www开头的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52648425/

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