我有一个庞大的数组,有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
答案 0 :(得分: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);
答案 1 :(得分:0)
尝试使用此模式aaa.+(?=[^}]*dog[^}]*)[^}]+
。
说明:
aaa.+
与aaa
和任何字符中的至少一个匹配,直到(?=[^}]*dog[^}]*)
,这表示位置,该位置位于包含dog
BUT 不包含}
,因此我们不会跳到下一个对象(感谢[^}]
)。如果断言为真(正向提前匹配),则匹配所有内容,直到}
:[^}]+
。