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

如何在Druid摄入规范中正确编写regexp_extract?

解决Druid摄入规范中regexp_extract正则转义问题

问题根源在于JSON配置的转义层级:查询语句中的正则直接在SQL环境执行,转义规则简单;但摄入规范是JSON格式,字符串中的反斜杠、双引号需要额外转义,否则会导致语法错误或匹配失败。

方法一:修正正则的转义格式

需要对正则中的每个特殊字符进行双重转义:

  • 正则里的双引号"需转义为\\\\\"(JSON解析后还原为正则所需的")
  • 正则里的\d需转义为\\\\d(JSON解析后还原为正则所需的\d)

正确的transformSpec配置如下:

"transformSpec": {
  "filter": null,
  "transforms": [
    {
      "type": "expression",
      "name": "ID",
      "expression": "regexp_extract(input, '(?<=\\\\\"ID\\\\\":\\\\\")(\\\\d+)(?=\\\\\",)', 0)"
    }
  ]
}

方法二:使用JSON提取函数更可靠

由于你的输入是标准JSON格式字符串,推荐直接使用Druid内置的json_extract_scalar函数提取字段,完全避免正则转义的麻烦,且匹配更稳定:

"transformSpec": {
  "filter": null,
  "transforms": [
    {
      "type": "expression",
      "name": "ID",
      "expression": "json_extract_scalar(input, '$.ID')"
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:31:03