代码之家  ›  专栏  ›  技术社区  ›  Shannon Hochkins

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

  •  0
  • Shannon Hochkins  · 技术社区  · 7 年前

    我有一个巨大的数组,超过40000个条目——我不想在每个条目上循环,也不需要检查每个属性,而是想首先将这个大数组序列化为一个字符串。

    在每个对象中,它们都以“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”,并有一个正则表达式return me from aaa zzz dog

    我所做的: https://regex101.com/r/yNSTs9/2

    2 回复  |  直到 7 年前
        1
  •  1
  •   melpomene    7 年前

    我已经把你的数组转换成字符串,并试图找到你想要的数据。

    在regex下面检查

    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);
        2
  •  0
  •   Michał Turczyn    7 年前

    试试这个图案 aaa.+(?=[^}]*dog[^}]*)[^}]+ .

    说明:

    aaa.+ 比赛 aaa (?=[^}]*dog[^}]*) ,表示位置,在任何包含 dog 不包含 } [^}] ). 如果断言为真(正向前瞻匹配),则匹配所有内容,直到 } : [^}]+ .

    Demo