我有一个像下面这样的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!
1条答案
按热度按时间ru9i0ody1#
编辑
正如其他人所指出的,解析和删除可能比使用Regex更容易。
如果Regex是强制性的,那么提供的表达式似乎不考虑具有另一个对象或数组的键。* 例如,
"cur":[...]
*这个表达式在测试过程中起作用。注意,如果使用Python等语言,一些字符需要转义。
(,?\s*"(queueNumber|name|cur|uniqueNumber)\d*"\s*:\s*(".*?"|\[.*?\]),?)
我还冒昧地抓住了一个声明中的逗号。希望这有帮助!
原件
您的正则表达式匹配“[some tag you specify]",一个冒号,然后是引号中的一些数据
""
。似乎在
"cur":[{"objectName":"test",}]
中,"cur":
后面的数据没有用引号括起来,而是用方括号括起来。