大括号之间的正则表达式搜索

问题描述 投票:0回答:2

我有一个庞大的数组,超过40,000个项目 - 而不是循环每个项目,并检查每个属性,我想首先将大规模数组序列化为字符串。

然后编写一个简单的正则表达式来匹配对象中的两个属性。

在每个单个对象中,它们都以“aaa”键和“true”键开头。

可以遵循各种键值对,然后对象上的最后一个键值对是zzz: true

var data = JSON.stringify([{
    aaa: true,
    some: 'cat goes meow',
    zzz: true
},{
    aaa: true,
    some: 'dog goes woof',
    zzz: true
}]);

我基本上想要一个搜索词“dog”,并且有一个正则表达式将我从aaa返回到zzz,其中这些键之间的任何值与查询dog匹配,在上面的示例中我希望得到最后一项数组。

我尝试过的:https://regex101.com/r/yNSTs9/2

javascript regex search
2个回答
1
投票

我已将您的数组转换为字符串并尝试根据需要查找数据。

检查下面的正则表达式

regex - /([^\}\{])([^\}\{]*)(dog)([^\}\{]*)(\})/g

var results = '[{"aaa":true,"some":"cat goes meow","zzz":true},{"aaa":true,"some":"dog goes woof","zzz":true}]'.match(/([^\}\{])([^\}\{]*)(dog)([^\}\{]*)(\})/g);

console.log(results);

0
投票

尝试这种模式aaa.+(?=[^}]*dog[^}]*)[^}]+

说明:

aaa.+匹配aaa和至少一个任何角色,直到(?=[^}]*dog[^}]*),这意味着位置,在任何包含dog但不包含}的字符串之前,所以我们不跳到下一个对象(感谢[^}])。如果断言为真(正向前瞻匹配),则匹配所有内容,直到}[^}]+

Demo

© www.soinside.com 2019 - 2024. All rights reserved.