正则表达式从数组中删除特定对象以及逗号(如果跟随它)

时间:2018-05-13 07:32:04

标签: regex apache-nifi

我正在寻找一个正则表达式来从一个对象数组中删除一个特定的json对象以及它后面的逗号。

JSon Array

[ { "id" : "id1", "value" : "value1"},
  { "id" : "id2", "value" : "value2"},
  { "id" : "id3", "value" : "value3"},
  { "id" : "id4", "value" : "value4"} ]

我想从上面的数组中删除对象{ "id" : "id3", "value" : "value3"}。由于它附加了逗号(,),我想删除它,否则数组不会是json格式。

同样,这只是样本。该数组可能包含n个对象。对象可以以任何顺序出现,可以是第一个对象,也可以是中间,也可以是最后一个对象。

因此,正则表达式应检查对象后面是否有逗号,然后用逗号删除对象,否则只删除对象。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

我认为您可以使用Apache NiFi提供的QueryRecord处理器。您可以找到有关此处理器here的更多详细信息,但一般情况是:它允许您针对流文件内容运行SQL查询。

因此,您可以使用以下SQL语句向QueryRecord添加动态关系:

SELECT * FROM FLOWFILE WHERE id <> 'id3'

这是针对流文件内容执行的,只有id不等于id3的记录捆绑在一起,并作为流文件发送到该动态关系。

这种方法避免使用计算成本高昂的RegEx。希望这有帮助!