我正在尝试使用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':substring(0, 4)}-${'$1':substring(4, 6)}-${'$1':substring(6, 8)}