本帖最后由 prog_C 于 2013-04-24 09:23:42 编辑

解决方案 »

  1.   

    这是一段json串,用正则来解析应该是不合适的。
    http://bbs.csdn.net/topics/390331957
    这是解析json串的帖子,
    楼主一定要用正则的话,其实你的那个正则匹配式效率是相当的低的。
    另外楼主的匹配式子可以加一个开头和结束标记再试试
      

  2.   

    最简单的方式split(",")后,找到id之类的数据再split(":")
      

  3.   


    final String friendList = "var friends=[{\"id\":422727123,\"vip\":false,\"selected\":true,\"mo\":false,\"name\":\"\u9648\u671b\u6797\",\"head\":\"http:\\/\\/hdn.xnimg.cn\\/photos\\/hdn121\\/20111020\\/2120\\/tiny_dfoU_59555d019117.jpg\",\"groups\":[]},{\"id\":123456789,\"vip\":false,\"selected\":false,\"mo\":false,\"name\":\"\u9648\u76ca\u714c\",\"head\":\"http:\\/\\/hdn.xnimg.cn\\/photos\\/hdn121\\/20130423\\/0105\\/tiny_Vhoj_f8eb00022ee4111a.jpg\",\"groups\":[]}];";
    final String regex = "\"id\":(\\d{9}),\"vip\":.*?\"name\":\"(.*?)\",\"head\":\"(.*?.jpg)\",\"";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(friendList);
    int i;
    while(matcher.find())
    {
    System.out.println("GroupCount : "+ matcher.groupCount());
    System.out.println("Start : "+matcher.start());
    System.out.println("End : "+matcher.end());
    for(i = 0;i<=matcher.groupCount();i++)
    {
    System.out.println(matcher.group(i));
    }
    }
    把你所有的.*都改成.*?就行了.
    贪婪匹配改成非贪婪