Javascript 使用RegExp在JSON中查找对象
我有一个JSON字符串,需要找到一个嵌套对象,只希望返回与我的regexp匹配的对象Javascript 使用RegExp在JSON中查找对象,javascript,json,regex,Javascript,Json,Regex,我有一个JSON字符串,需要找到一个嵌套对象,只希望返回与我的regexp匹配的对象 { "some": { "nested": { "stuff": [ { "bla": "blub1", "bar": "bar" }, { "bla": "blub2", "bar": "foo" }, {
{
"some": {
"nested": {
"stuff": [
{
"bla": "blub1",
"bar": "bar"
},
{
"bla": "blub2",
"bar": "foo"
},
{
"bla": "blub3",
"bar": "foobar"
}
]
}
}
我几乎用这个regexp/{(.*?):“foo.*?)}/gs
得到了它,但它不仅返回匹配的对象
我只想让它退回这个:
{
"bla": "blub2",
"bar": "foo"
}
见:
实际上,我不想使用正则表达式,但我正试图找到在嵌套对象中查找对象的最佳解决方案,并认为它可能适用于正则表达式
编辑:我不认为这不是一个好的方法,但我只想尝试看看正则表达式和解析JSON之间的性能,如果您在使用正则表达式时遇到了问题,请进行深入搜索:
[^{]*?({\s+“bla[^}]*?})
基本上,执行非贪婪搜索直到第一个{“bar
,捕获直到第一个闭合大括号
编辑:如果只需要第N个实例,[^{]*?(?:{\s+”bla[^}]*?}){N}[^{]*?({\s+”bla[^}]*?})
如果您只想要一个带有bar:foo:
*{([^}]*bar.*.foo“[^}]*?)}
将JSON与正则表达式一起使用是一个坏主意。它会变得易变且容易损坏。最好使用一种基本的iterable类型,使用JSON库加载JSON,然后简单地通过它建立索引以获取所需的数据。如果您对使用正则表达式没有兴趣:
[^{]*?({\s+“bla[^}]*?})
基本上,执行非贪婪搜索直到第一个{“bar
,捕获直到第一个闭合大括号
编辑:如果只需要第N个实例,[^{]*?(?:{\s+”bla[^}]*?}){N}[^{]*?({\s+”bla[^}]*?})
如果您只想要一个带有bar:foo:
*{([^}]*bar.*.foo“[^}]*?)}
将JSON与正则表达式一起使用是个坏主意。变化无常,容易破碎。最好使用一种基本的iterable类型,使用json库加载json,然后简单地通过索引获取所需的数据。regex确实不是处理json的工具。例如,当JSON字符串值包含
}
字符时,一个简单的实现就会中断。更健壮的实现是可能的,但不能处理所有可能的情况,通常不值得这么麻烦。也许您可以告诉我们您所处的环境,以便我们建议使用另一个更合适的工具?不要在这种情况下使用正则表达式。只需将json字符串解析为json对象,并遍历该对象即可获得所需的部分。您可以为它编写匹配函数。您到底想匹配什么?如前所述:具有属性“bar”
、值“foo”
regex的嵌套对象实际上不是处理json的工具。例如,当JSON字符串值包含}
字符时,一个简单的实现就会中断。更健壮的实现是可能的,但不能处理所有可能的情况,通常不值得这么麻烦。也许您可以告诉我们您所处的环境,以便我们建议使用另一个更合适的工具?不要在这种情况下使用正则表达式。只需将json字符串解析为json对象,并遍历该对象即可获得所需的部分。您可以向其写入匹配函数。您到底要匹配什么?如前所述:具有属性“bar”
且值“foo”
第一个正则表达式的嵌套对象匹配所有对象,而不仅仅是带有“foor”的对象:“bar”。实际上,我不想使用正则表达式,我正在试图找到在嵌套对象中查找对象的最佳解决方案。@Heiko那么你为什么在问题的标题中加上“with regexp?”呢?因为我想尝试不同的方法,而regexp就是其中之一。第二种方法只与bar:foo匹配,我添加了第三个匹配foo:bar的单词first regex匹配所有的单词,而不仅仅是带有“foor”的单词:“bar”。实际上,我不想使用正则表达式,我正在试图找到在嵌套对象中查找对象的最佳解决方案。@Heiko那么你为什么在问题的标题中加上“with regexp?”呢?因为我想尝试不同的方法,而regexp就是其中之一。第二种方法只与bar:foo匹配,我还添加了第三个匹配foo:bar的单词