java 如果值的类型为Array,则Regex不删除键

cygmwpex  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(86)

我有一个像下面这样的JSON:

{"queueNumber": "123","UserId":[12,12,34],"cur":[{"objectName":"test","uniqueNumber":"123456"}]}

如果键值对与给定的字段/值匹配,我想删除它。
我有下面的正则表达式,我用java使用这个表达式。如果键是一个数组(例如:cur)

(,\s*"(queueNumber|name|cur|uniqueNumber|UserId)\d*":\s*(".*?"|\d+.\d+|\w+))|("(queueNumber|name|uniqueNumber|cur|UserId)\d*":\s*(".*?"|\d+.\d+|\w+)(\s*,)?)

电流输出:

{"UserId":[12,12,34],"cur":[{"objectName":"test"}]}

预期输出:

{}

如何增强这一点来处理这一点?
TIA!

ru9i0ody

ru9i0ody1#

编辑

正如其他人所指出的,解析和删除可能比使用Regex更容易。
如果Regex是强制性的,那么提供的表达式似乎不考虑具有另一个对象或数组的键。* 例如,"cur":[...] *
这个表达式在测试过程中起作用。注意,如果使用Python等语言,一些字符需要转义。
(,?\s*"(queueNumber|name|cur|uniqueNumber)\d*"\s*:\s*(".*?"|\[.*?\]),?)
我还冒昧地抓住了一个声明中的逗号。希望这有帮助!

原件

您的正则表达式匹配“[some tag you specify]",一个冒号,然后是引号中的一些数据""
似乎在"cur":[{"objectName":"test",}]中,"cur":后面的数据没有用引号括起来,而是用方括号括起来。

相关问题