Telegraf processors.regex插件提取字符串末尾片段正则配置求助
正则配置调整方案
你当前的配置存在两个问题:
- 正则表达式语法错误:
$是字符串结束锚点,写在表达式中间会导致无法匹配任何内容 - 未正确设置捕获分组,错误引用了全局匹配项
${0}而非目标内容分组
场景1:固定提取从are开头到末尾的内容
如果你的需求是只要字符串中包含are路径段,就提取从该段开始到末尾的所有内容,调整后的完整配置如下:
[[processors.regex]] order = 1305 namepass = ["*_promitor_test"] # 标签与字段转换定义在独立子表中 [[processors.regex.tags]] ## 待处理的标签 key = "resource" ## 匹配标签值的正则表达式:忽略前面的所有内容,捕获从are开始到末尾的部分 pattern = "^.*/(are/.*)$" ## 引用第一个捕获组的内容 replacement = "${1}" result_key = "resource_type"
原理说明:
^.*匹配从字符串开头到倒数第一个/的所有内容- 括号
(are/.*)为第一个捕获组,匹配are/开头到字符串结尾的所有内容 - 替换时直接引用捕获组
${1}即可得到are/you的目标结果
场景2:通用提取路径最后两个分段
如果你的需求是不管路径最后两段的内容是什么,统一提取最后两个/分隔的分段,只需要将上述配置的pattern字段修改为^.*/([^/]+/[^/]+)$即可,适配任意符合x/x/x/x格式的路径字符串。
内容的提问来源于stack exchange,提问作者svw1105
相关产品推荐
相关产品推荐

