正则表达式从数组中删除特定对象以及逗号(如果后面跟着它)
Regex to remove a specific object from an array along with comma if it is followed to it
我正在寻找一个正则表达式来从对象数组中删除特定的 json 对象以及逗号(如果后面跟着逗号)。
JSon数组
[ { "id" : "id1", "value" : "value1"},
{ "id" : "id2", "value" : "value2"},
{ "id" : "id3", "value" : "value3"},
{ "id" : "id4", "value" : "value4"} ]
我想从上面的数组中删除对象 { "id" : "id3", "value" : "value3"}
。因为它附加了一个逗号 (,),所以我也想删除它,否则数组将不会是 json 格式。
同样,这只是示例。该数组可能包含 n 个对象。对象可以以任何顺序出现,它可能在第一个对象,或者在中间,或者最后一个对象。
所以,正则表达式应该检查对象后面是否有逗号,然后用逗号删除对象,否则只删除对象。
如有任何帮助,我们将不胜感激
这是使用唯一 ID 字段查找正确对象的正则表达式示例:
\h*{[^}]+?"id3"[^}]+?},?\h*\n?(?=]?)
实际示例:https://regex101.com/r/0tRs09/2/
如果您需要使用捕获组,只需将整个内容括起来即可。
我认为您可以使用 Apache NiFi 提供的 QueryRecord
处理器。您可以找到有关此处理器的更多详细信息 here 但一般情况是这样的:它允许您 运行 对流文件内容进行 SQL
查询。
因此您可以使用 SQL 语句向 QueryRecord
添加动态关系,例如:
SELECT * FROM FLOWFILE WHERE id <> 'id3'
这是针对流文件内容执行的,只有 id
不等于 id3
的记录被捆绑在一起并作为流文件发送到该动态关系。
这种方法避免了使用计算量大的 RegEx。希望这对您有所帮助!
我正在寻找一个正则表达式来从对象数组中删除特定的 json 对象以及逗号(如果后面跟着逗号)。
JSon数组
[ { "id" : "id1", "value" : "value1"},
{ "id" : "id2", "value" : "value2"},
{ "id" : "id3", "value" : "value3"},
{ "id" : "id4", "value" : "value4"} ]
我想从上面的数组中删除对象 { "id" : "id3", "value" : "value3"}
。因为它附加了一个逗号 (,),所以我也想删除它,否则数组将不会是 json 格式。
同样,这只是示例。该数组可能包含 n 个对象。对象可以以任何顺序出现,它可能在第一个对象,或者在中间,或者最后一个对象。
所以,正则表达式应该检查对象后面是否有逗号,然后用逗号删除对象,否则只删除对象。
如有任何帮助,我们将不胜感激
这是使用唯一 ID 字段查找正确对象的正则表达式示例:
\h*{[^}]+?"id3"[^}]+?},?\h*\n?(?=]?)
实际示例:https://regex101.com/r/0tRs09/2/
如果您需要使用捕获组,只需将整个内容括起来即可。
我认为您可以使用 Apache NiFi 提供的 QueryRecord
处理器。您可以找到有关此处理器的更多详细信息 here 但一般情况是这样的:它允许您 运行 对流文件内容进行 SQL
查询。
因此您可以使用 SQL 语句向 QueryRecord
添加动态关系,例如:
SELECT * FROM FLOWFILE WHERE id <> 'id3'
这是针对流文件内容执行的,只有 id
不等于 id3
的记录被捆绑在一起并作为流文件发送到该动态关系。
这种方法避免了使用计算量大的 RegEx。希望这对您有所帮助!