解决方案 »

  1.   

     String  LogLine1="a=123, b=AB, c=[1, 2, 3], d=456";
    Pattern pattern2 = Pattern.compile("=([\\d\\w]+|\\[.*?\\])");
    Matcher matcher2 = pattern2.matcher(LogLine1);
    while(matcher2.find())
    System.out.println(matcher2.group(1));
      

  2.   


    哈,非常感谢。
    还有个小要求,如何支持属性值为中文?
    比如:
    a=中国, b=123, c=[1, 2, 3], d=AB
      

  3.   

     Pattern pattern2 = Pattern.compile("=([\\d\\w\u4e00-\u9fa5]+|\\[.*?\\])");
      

  4.   


    非常感谢。看了下您的代码,原来差在:matcher.group(index)这个函数的用法。原来在正则表达式里面加了()这样的括号后,就可以用matcher.group(1)获取第一个括号里面的内容了。
    如果用matcher.group(),得到的是整个匹配的字符串。我自己也写了个:
    System.out.println("--------------------------------------");
    Pattern pattern2 = Pattern.compile("=(.*?)[,]\\s+[^0-9]");
    Matcher matcher2 = pattern2.matcher(LogLine1);
    while(matcher2.find()){
    System.out.println(matcher2.group(1));
    }
      

  5.   


    您这个:
    Pattern.compile("=([\\d\\w\u4e00-\u9fa5]+|\\[.*?\\])");
    比我的:
    Pattern.compile("=(.*?)[,]\\s+[^0-9]");
    好很多。
      

  6.   


    非常感谢。看了下您的代码,原来差在:matcher.group(index)这个函数的用法。原来在正则表达式里面加了()这样的括号后,就可以用matcher.group(1)获取第一个括号里面的内容了。
    如果用matcher.group(),得到的是整个匹配的字符串。我自己也写了个:
    System.out.println("--------------------------------------");
    Pattern pattern2 = Pattern.compile("=(.*?)[,]\\s+[^0-9]");
    Matcher matcher2 = pattern2.matcher(LogLine1);
    while(matcher2.find()){
    System.out.println(matcher2.group(1));
    }d=456 是不是也要匹配。
      

  7.   


    非常感谢。看了下您的代码,原来差在:matcher.group(index)这个函数的用法。原来在正则表达式里面加了()这样的括号后,就可以用matcher.group(1)获取第一个括号里面的内容了。
    如果用matcher.group(),得到的是整个匹配的字符串。我自己也写了个:
    System.out.println("--------------------------------------");
    Pattern pattern2 = Pattern.compile("=(.*?)[,]\\s+[^0-9]");
    Matcher matcher2 = pattern2.matcher(LogLine1);
    while(matcher2.find()){
    System.out.println(matcher2.group(1));
    }d=456 是不是也要匹配。
    是的,所以我那个有问题。刚开始想通过它来spilt呢,要匹配的话有问题。
      

  8.   

    System.out.println("--------------------------------------");
    Pattern pattern4 = Pattern.compile("([\\d\\w]+)=([\\d\\w\u4e00-\u9fa5]+|\\[.*?\\])");
            Matcher matcher4 = pattern4.matcher(LogLine1);
            while(matcher4.find()) {
             System.out.print(matcher4.group(1) + "\t");
             System.out.println(matcher4.group(2));
            }新版,可以拿属性名,也可以拿属性值