You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Logstash中使用Ruby移除URL数组中的URL前缀问题

在Logstash里用Ruby移除URL数组的前缀

你的两种数组遍历写法(each加push、map)逻辑本身没毛病,问题确实出在gsub的正则上,核心是两个点:

  • 正则没锚定字符串开头,万一URL中间出现类似http://的片段,可能会误匹配
  • 在Logstash配置语境中,Ruby字符串里的反斜杠得双重转义,不然会被Logstash的解析器提前转义,导致正则失效

修正后的代码

推荐用更简洁的map写法:

newUrlArray = urlArray.map{ |url| url.gsub(/^(https?:\/\/)?(www\.)?/, '') }

如果是写在Logstash的ruby filter块里,要注意配置里的字符串转义,完整示例如下:

filter {
  ruby {
    code => "
      urlArray = ['https://www.google.com','https://www.bcc.com']
      newUrlArray = urlArray.map{ |url| url.gsub(/^(https?:\/\/)?(www\.)?/, '') }
      event.set('cleaned_urls', newUrlArray)
    "
  }
}

正则说明

  • ^:锚定字符串开头,保证只处理URL最前面的前缀,不会误碰中间内容
  • (https?:\/\/)?:匹配可选的http/https协议头(s?表示s可选,\/\/是Ruby正则里对斜杠的转义)
  • (www\.)?:匹配可选的www.前缀
  • 替换为空串后,就能得到去掉前缀的纯域名(比如google.com、bcc.com)

最终效果

运行上述代码后,newUrlArray的内容为:

['google.com', 'bcc.com']

内容的提问来源于stack exchange,提问作者Mor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:03:14