[英]Find object in JSON with RegExp
我有一个JSON字符串,需要找到一个嵌套的对象,只希望返回与我的正则表达式匹配的对象。
{
"some": {
"nested": {
"stuff": [
{
"bla": "blub1",
"bar": "bar"
},
{
"bla": "blub2",
"bar": "foo"
},
{
"bla": "blub3",
"bar": "foobar"
}
]
}
}
我几乎可以通过此reg exp /{(.*?"bar": "foo".*?)}/gs
获得它,但这并不只返回匹配的对象。
我只希望它返回此:
{
"bla": "blub2",
"bar": "foo"
}
参见: https : //regex101.com/r/mK3oI6/3
我实际上不想使用正则表达式,但是我试图找到在嵌套对象中找到对象的最佳解决方案,并认为它可以与正则表达式一起使用。
编辑:我不明白这不是一个很好的方法,但我只想尝试看看正则表达式和解析JSON之间的性能,并进行深度搜索
如果您对使用正则表达式不满意:
[^{]*?({\\s+"bla[^}]*?})
基本上,会进行非贪婪搜索,直到第一个{ <space> "bar
捕获到第一个闭合花括号为止。
编辑:如果只需要第N个实例,则[^{]*?(?:{\\s+"bla[^}]*?}){N}[^{]*?({\\s+"bla[^}]*?})
如果只想要带有bar的那个:foo:
.*{([^}]*bar.*?foo"[^}]*?)}
将JSON与REGEX一起使用是一个糟糕的想法。 变幻无常,很容易折断。 最好使用一种原始的可迭代类型,使用json库加载json,然后简单地对它进行索引以获取所需的数据。
您将括号放在错误的位置,这样您就可以捕获所有内容,直到找到匹配项
如果您执行{.*("bar": "foo").*}
它只会返回匹配的部分(但这是一个贪婪的搜索,请注意大小)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.