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

Apache nifi 如何在NiFi表达式语言中使用正则表达式捕获组变量?,apache-nifi,Apache Nifi,我正在尝试使用NiFi替换文本文件所有行中的日期格式。该文件如下所示: ABCDE,20200619,23.8 FGHIJ,20200619,14.5 ... 我正在尝试使用ReplaceText processor将20200619更改为2020-06-19。我已经使正则表达式与日期匹配((20\d{6},)),并且我已经检查了它是否工作:当我编写$1测试时,在替换值中它按预期工作(文件的单行看起来像ABCDE,20200619,TESTING,23.8) 问题是当我尝试使用表达式语言和:s

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

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

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

${$1:substring(0, 4)}-${$1:substring(4, 6)}-${$1:substring(6, 8)}
但我得到以下错误:

表达式语言似乎无法访问我的
$1
变量。如何访问表达式语言中的正则表达式捕获组变量

这是我的处理器:


我找到了答案:当试图访问${…}中的正则表达式捕获组时,我们需要将其与撇号一起使用,这样的代码可以工作:

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

做好岗位和解决方案。你应该能够接受它,并给自己更多的代表学分。