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

如何使用NiFi Expression Language将属性键名转为大写?

NiFi Expression Language实现属性键名大写转换

正确表达式

${src:replaceAll('\\"(.+?)\\"=', '\\"${$1:toUpper()}\\"=')}

效果验证

  • 源属性值:
    "key1"="xXx","key2"="yyy","key3"="zzz"
    
  • 处理后结果:
    "KEY1"="xXx","KEY2"="yyy","KEY3"="zzz"
    

错误原因分析

  1. 第一个尝试的表达式${src:replaceAll('\"(.+?)\"=',"${'$1':toUpper()}")}:

    • 语法错误源于NiFi的表达式解析逻辑:嵌套的${'$1':toUpper()}会被优先解析为“将字符串$1转大写”,而非引用正则捕获组的实际值,同时多层${}会引发解析冲突。
  2. 第二个尝试的表达式${src:replaceAll('\"(.+?)\"=',"toUpperCase($1)")}:

    • NiFi的replaceAll替换字符串默认按字面量处理,直接写toUpperCase($1)不会触发函数执行,只会原样输出。

关键说明

在NiFi Expression Language中,若要对replaceAll的正则捕获组执行函数处理,必须在替换字符串中用${捕获组变量:函数名()}的形式包裹,这样NiFi才会解析并执行对应的函数逻辑,而非将其作为字面量输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:52:36