提问者:小点点

如何在NiFi表达式语言中使用正则表达式捕获组变量?


我正在尝试使用NiFi替换所有文本文件行中的日期格式。该文件如下所示:

ABCDE,20200619,23.8
FGHIJ,20200619,14.5
...

我正在尝试使用Replace eText处理器将20200619更改为2020-06-19。我已经制作了匹配日期的正则表达式((20\d{6},))并且我已经检查了它是否正常工作:当我编写1美元TESTING时,替换值中它按预期工作(单行文件看起来像ABCDE,20200619, TESTING,23.8)。

问题是当我尝试使用表达式语言和: substring函数时。这是我在替换值中的代码:

${$1:substring(0, 4)}-${$1:substring(4, 6)}-${$1:substring(6, 8)}

但我得到以下错误:

NiFi错误

看起来表达式语言无法访问我的1美元变量。如何在表达式语言中访问我的正则表达式捕获组变量?

这是我的处理器:

NiFi处理器


共1个答案

匿名用户

我找到了答案:当尝试在${…}中访问正则表达式捕获组时,我们需要将其与撇号一起使用,因此这样的代码有效:

${'$1':substring(0, 4)}-${'$1':substring(4, 6)}-${'$1':substring(6, 8)}