如题, ,{a:1, b:key, c:3},{a:1, b:key1, c:3},{a:1, b:key2, c:3},{a:1, b:key3, c:3},{a:1, b:key4, c:3},
我有一组字符串, 由N个json格式的字符串组成,每一组json字符串其中有一个属性是唯一的,也就是上面的key.求一正则,能够根据key截取出key所在的json字符串.

解决方案 »

  1.   

    {a:1, b:key2, c:3}  截取出来的最终效果.
      

  2.   

    for example
    String s = ",{a:1, b:key, c:3},{a:1, b:key1, c:3},{a:1, b:key2, c:3},{a:1, b:key3, c:3},{a:1, b:key4, c:3},";
    Matcher m = Pattern.compile("[{][^{}]*?key[^{}]*[}]").matcher(s);
    while (m.find()) {
        System.out.println(m.group());
    }或者,你直接分割也可以
    String s = ",{a:1, b:key, c:3},{a:1, b:key1, c:3},{a:1, b:key2, c:3},{a:1, b:key3, c:3},{a:1, b:key4, c:3},";
    String[] sa = s.replaceAll("^[,]", "").split("(?<=[}]),"); //去掉开头的逗号,再按},分割
    for (String ss : sa) {
        System.out.println(ss);
    }
      

  3.   

    好像明白你的意思了,要动态根据key来截取
    String key = "key1"; //取key1所在的json字符串
    String s = ",{a:1, b:key, c:3},{a:1, b:key1, c:3},{a:1, b:key2, c:3},{a:1, b:key3, c:3},{a:1, b:key4, c:3},";
    Matcher m = Pattern.compile(String.format("[{][^{}]*?%s[^{}]*[}]", key)).matcher(s);
    while (m.find()) {
        System.out.println(m.group());
    }
      

  4.   

    3Q...结贴. 我直接负向预查可以直接截取出来了. 剩了while循环了.