我试图检查JSON对象是否包含两个特定的KV对,而不管顺序如何。
例如,在下面的JSON对象中:
{"color":"red","animal":"dog","drink":"water","food":"pizza","fish":"tuna","foo":"bar"}
字符串
我想检查是否同时包含**"animal":"dog"
和"fish":"tuna"
。
下面的正则表达式仅在KV对的顺序如上所述时起作用。
^.*(("animal":"dog").*("fish":"tuna")).*$
型
当顺序发生如下更改时,它不起作用:{"color":"red","drink":"water","food":"pizza","fish":"tuna","foo":"bar","animal":"dog"}
个
我如何查询任何KV对的订单?
2条答案
按热度按时间gijlo24d1#
我不确定regex是最好的工具。当您使用json时,最好使用json专用工具。
例如,如果您可以访问
jq
这样的工具,您可以使用例如。字符串
键值对在json中出现的顺序在这里并不重要。
查看输入数据,上面的查询将返回
true
:型
如果有一个键值对缺失或不正确,您将收到false:
的字符串
我注意到你已经问过其他关于Python的问题,所以如果你想要一个Python的解决方案,它可以像把你的json转换成dict一样简单,然后检查键值对的存在:
型
如果你完全决定使用正则表达式(我真的不认为这是一个好的选择,但最终它是你的决定),你 * 可以 * 简单地使用
|
来检查两个可能的顺序,例如,型
https://regex101.com/r/qxvJu2/1的
gmol16392#
请用这个。它可能对你有帮助
字符串