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

DataWeave 2.0中scan方法正则匹配返回空数组求助

DataWeave 2.0 scan方法匹配失败的解决思路

问题根源

DataWeave的正则表达式语法中,用/.../包裹的正则字面量不需要对双引号额外转义,你写的/\"(NewLABEL.[a-zA-Z]*)/里的\"属于多余转义,反而会导致匹配不到字符串里实际的双引号。另外原正则里的.是通配符(匹配任意字符),如果要精准匹配目标里的点号,也需要转义。

修正方案

去掉双引号的转义,同时转义点号优化匹配精度,修正后的表达式:

$.message scan(/"(NewLABEL\.[a-zA-Z]*)"/)

如果需要匹配包含数字、下划线的标识,也可以用\w*替代[a-zA-Z]*,更通用:

$.message scan(/"(NewLABEL\.\w*)"/)

验证效果

针对输入字符串:

Field "NewLABEL.title" of required type "String!" was not provided.

执行修正后的scan方法,会返回结果:[["NewLABEL.title"]],其中嵌套数组的第一个元素就是你要提取的目标文本。如果只需要直接拿到目标值,可以再用map或索引提取:

($.message scan(/"(NewLABEL\.\w*)"/))[0][0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:40:28