使用 Nifi ReplaceText 将字符/字符串的第一次或最后一次出现与另一个字符串交换?

Str*_*nks 1 regex hortonworks-data-platform apache-nifi

尝试将标签添加到传入的 nifi json 流文件中。

输入:

[{"HIT":"DUMMY_3","BatchId":"jkajks981n-1280189nd-129dnbj-2349nbfk","Id":"81274376231"}]
Run Code Online (Sandbox Code Playgroud)

预期输出:

[{"nifi_received_ts_est":"2018-10-04 09:31:50.108","HIT":"DUMMY_3","BatchId":"jkajks981n-1280189nd-129dnbj-2349nbfk","Id":"81274376231"}]
Run Code Online (Sandbox Code Playgroud)

尝试了不同的方法,现在接近这个:

Search Value: ^([^\[]*)
Replacement Value: [{"nifi_received_ts_est":"${now():format("yyyy-MM-dd HH:mm:ss.SS")}"\,$2
Replacement Strategy: Regex Replace
Evaluation Mode: Entire Text
Run Code Online (Sandbox Code Playgroud)

但结果并不是预期的那样。下面:

[{"nifi_received_ts_est":"2018-10-04 09:31:50.108",$2[{"HIT":"DUMMY_3","BatchId":"jkajks981n-1280189nd-129dnbj-2349nbfk","Id":"81274376231"}]
Run Code Online (Sandbox Code Playgroud)

在正则表达式中从来都不好...:(有人可以帮助使用正确的短语来搜索和替换吗?另外,如果有人可以解释正则表达式以及如何进行分组,它也会有所帮助。也许是一个很好的备忘单参考。什么是好的测试和解析 nifi 特定正则表达式的站点?

解决方案:如果它可以帮助任何人找到该模式:搜索值:^(.*?)[{(将执行惰性搜索,直到找到第一个“[{”并将其之前的内容分组到 $1),因此替换将是:$1{"nifi_received_ts_est ":"${now():format("yyyy-MM-dd HH:mm:ss.SS")}",

dag*_*ett 5

更改search value为^(\[\{)(.*)

在这种情况下,第一组(\[\{)将匹配前两个符号

第二组是(.*)字符串的其余部分