我有以下正则表达式^http:\/\/(?!www\.)(.*)$
预期行为:
http://example.com - Match
http://www.example.com - Does not match
看起来像golang
不支持负向前瞻。我怎样才能重写这个正则表达式来工作golang
?
UPDATE
我没有使用 golang 编码,我正在使用Traefik https://traefik.io接受正则表达式(golang 风格)作为配置值,所以基本上我有这个:
regex = "^https://(.*)$"
replacement = "https://www.$1"
我想要的是始终添加www.到 URL,但是NOT如果 URL 已经有,否则会变成www.www.*
如果您真的想手动创建负前瞻,则需要排除所有可能的情况w
在正则表达式中:
^https?://(([^w].+|w(|[^w].*)|ww(|[^w].+)|www.+)\.)?example\.com$
该正则表达式允许任何前面带有点的单词example.com
,除非这个词只是www
。它通过允许任何不以w
,或者,如果它开头为w
就是这样w
或后跟一个非w
和其他东西。如果以两个开头w
,那么它必须要么就是这样,要么后面跟着一个非w
。如果它开始于www
, it must后面跟着某事。
Demo https://regex101.com/r/tT04sG/1
澄清使这变得容易得多。该方法是始终(可选)匹配www.
然后总是将其放回替换中:
Search:
^http://(?:www\.)?(.*)\b$
Replace:
http://www.$1
Demo 2 https://regex101.com/r/tT04sG/3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)