如何使用纯正则表达式移除URL端口以适配Vector VRL使用场景
解决方案
正确正则表达式
匹配规则(用于替换)
(https?://[^:/]+):\d+
替换内容
$1
规则说明
https?://匹配http/https协议前缀[^:/]+使用排除型字符集匹配主机部分,遇到冒号(端口前的分隔符)或斜杠(路径起始符)立刻停止匹配,避免原写法中.*贪婪匹配过度的问题:\d+匹配端口段(冒号加1位及以上数字)- 替换时仅保留分组1捕获的协议+主机部分,自动丢弃端口段
VRL中使用示例
直接调用VRL的replace内置函数即可:
# .url为存储原始URL的字段,处理后结果存入.clean_url字段 .clean_url = replace!(.url, r"(https?://[^:/]+):\d+", r"$1")
效果验证
所有测试用例均符合预期:
https://www.aaaa.com:5000→https://www.aaaa.comhttps://bbbb.com:443→https://bbbb.comhttps://cccc.com→ 无匹配直接保留原内容https://cccc.com- 带路径的URL
https://test.com:8080/path?query=1→https://test.com/path?query=1
内容的提问来源于stack exchange,提问作者Jenny M
相关产品推荐
相关产品推荐

