apache-nifi - 如何在 NiFi 表达式语言中使用正则表达式捕获组变量?
问题描述
我正在尝试使用 NiFi 替换所有文本文件行中的日期格式。该文件如下所示:
ABCDE,20200619,23.8
FGHIJ,20200619,14.5
...
我正在尝试使用 ReplaceText 处理器更改20200619
为2020-06-19
. 我已经制作了匹配日期()的正则表达式,(20\d{6},)
并且我检查了它是否正常工作:当我写入它时$1 TESTING,
,Replacement value
它按预期工作(单行文件看起来像ABCDE,20200619, TESTING,23.8
)。
问题是当我尝试使用表达式语言和:substring
函数时。这是我的代码Replacement value
:
${$1:substring(0, 4)}-${$1:substring(4, 6)}-${$1:substring(6, 8)}
但我收到以下错误:
看起来表达式语言无法访问我的$1
变量。如何在表达式语言中访问我的 Regex Capturing Group 变量?
这是我的处理器:
解决方案
我找到了答案:当尝试访问 ${...} 中的 Regex Capturing Group 时,我们需要将它与撇号一起使用,因此这样的代码有效:
${'$1':substring(0, 4)}-${'$1':substring(4, 6)}-${'$1':substring(6, 8)}
推荐阅读
- node.js - 嵌套for循环中的node.js等待失败
- python - 如何通过第二次重复拆分列表
- r - expss tab_sort_* 当 tab_row_labels() 存在时没有按预期运行
- python - 人脸检测 - 打开 CV 找不到人脸
- mysql - 想法 [08S01] 通讯链路故障
- google-cloud-platform - GCP:如何检查日志以了解负载均衡器后端健康状态的变化
- php - 用于 maria-db 动态列的 Laravel 雄辩包装器
- keras - 使用 VGG19 进行特征提取时有这么多空值特征
- reactjs - 如何更改 react-router-dom 中的 URL 路径?
- rust - 在 Rust 中高效地执行反向 split_off 操作