regex - 正则表达式匹配golang中不以www开头的字符串
问题描述
我有以下正则表达式^http:\/\/(?!www\.)(.*)$
预期行为:
http://example.com - Match
http://www.example.com - Does not match
看起来golang
不支持负前瞻。如何重写此 RegEx 以进行处理golang
?
更新
我没有使用 golang 进行编码,我使用的是接受 Regex(golang 风格)作为配置值的 Traefik,所以基本上我有这个:
regex = "^https://(.*)$"
replacement = "https://www.$1"
我想要的是始终添加www。到 URL,但如果 URL 已经有它,则不是,否则它将变为www.www.*
解决方案
如果您真的一心想要手动创建负前瞻,则需要排除w
正则表达式中的所有可能:
^https?://(([^w].+|w(|[^w].*)|ww(|[^w].+)|www.+)\.)?example\.com$
此正则表达式允许任何在前面带有点example.com
的单词,除非该单词是 just www
。它通过允许任何不以 开头的单词w
,或者,如果它以它开头,w
要么就是那个,w
要么后面跟着一个非w
和其他的东西。如果它以两个 开头w
,那么它必须是那个或后跟一个非w
。如果它以 开头www
,则后面必须跟一些东西。
澄清使这变得容易得多。方法是始终(可选)匹配www.
,然后始终将其放回替换中:
搜索:
^http://(?:www\.)?(.*)\b$
代替:
http://www.$1
推荐阅读
- mysql - MySQL获取至少一条记录与查询匹配的所有关联记录
- python-3.x - 使用 scipy 优化的 Python Vasicek 模型校准
- android - 如何在以下代码 Android API 服务中添加自动刷新
- inno-setup - 在 Inno Setup License 页面上,将复选框替换为“我同意”按钮
- c# - C#:Process.Start - 请求的操作需要提升
- html - 响应式 img 从 srcset 获取错误的图像
- c# - 将 ContextMenuStrips 添加到多个 TabPages 上的多个 DataGridViews
- node.js - 角反应形式选择默认值和对象ID
- vba - 检测打开文件的问题
- python - Google Adwords - CUSTOMER_ID_IS_REQUIRED 错误(Python)