字符串为:
HeapMemoryUsage: javax.management.openmbean.CompositeDataSupport(compositeType=javax.management.openmbean.CompositeType(name=java.lang.management.MemoryUsage,items=((itemName=committed,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=init,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=max,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=used,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)))),contents={committed=6496256, init=0, max=66650112, used=4241424})
NonHeapMemoryUsage: javax.management.openmbean.CompositeDataSupport(compositeType=javax.management.openmbean.CompositeType(name=java.lang.management.MemoryUsage,items=((itemName=committed,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=init,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=max,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=used,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)))),contents={committed=35618816, init=33718272, max=121634816, used=21805632})
ObjectPendingFinalizationCount: 0
需要分别匹配求出红色字符串中显示的数字。
要求结果为:
6496256
4241424
66650112
即可。
可以分别提供三个正则表达式进行多次匹配求出。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【apinglee】截止到2008-07-09 16:44:30的历史汇总数据(不包括此帖):
    发帖的总数量:19                       发帖的总分数:280                      每贴平均分数:14                       
    回帖的总数量:11                       得分贴总数量:4                        回帖的得分率:36%                      
    结贴的总数量:15                       结贴的总分数:200                      
    无满意结贴数:5                        无满意结贴分:100                      
    未结的帖子数:4                        未结的总分数:80                       
    结贴的百分比:78.95 %               结分的百分比:71.43 %                  
    无满意结贴率:33.33 %               无满意结分率:50.00 %                  
    楼主加油
      

  2.   

    有点不显示  最后一行是{committed=35618816, init=33718272, max=121634816, used=21805632}) 拿什么匹配啊 能想到的就是拿这四个单词匹配。。
      

  3.   

        public static void main(String [] args) throws Throwable {
            String str =
                "HeapMemoryUsage: javax.management.openmbean.CompositeDataSupport(compositeType=javax.management.openmbean.CompositeType(name=java.lang.management.MemoryUsage,items=((itemName=committed,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=init,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=max,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=used,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)))),contents={committed=6496256, init=0, max=66650112, used=4241424})"
                    + "\r\nNonHeapMemoryUsage: javax.management.openmbean.CompositeDataSupport(compositeType=javax.management.openmbean.CompositeType(name=java.lang.management.MemoryUsage,items=((itemName=committed,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=init,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=max,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=used,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)))),contents={committed=35618816, init=33718272, max=121634816, used=21805632})"
                    + "\r\nObjectPendingFinalizationCount: 0 ";
            String heapMemoryUsagePatternStr =
                "HeapMemoryUsage\\:.*?contents=\\{committed=(\\d+), init=(\\d+), max=(\\d+), used=(\\d+)\\}.*";
            String nonHeapMemoryUsagePatternStr =
                ".*NonHeapMemoryUsage\\:.*?contents=\\{committed=(\\d+), init=(\\d+), max=(\\d+), used=(\\d+)\\}.*";
            Pattern heapMemoryUsagePattern = Pattern.compile( heapMemoryUsagePatternStr, Pattern.DOTALL );
            Pattern nonHeapMemoryUsagePattern = Pattern.compile( nonHeapMemoryUsagePatternStr, Pattern.DOTALL );
            Matcher heapMemoryUsageMatcher = heapMemoryUsagePattern.matcher( str );
            Matcher nonHeapMemoryUsageMatcher = nonHeapMemoryUsagePattern.matcher( str );
            if (heapMemoryUsageMatcher.matches()) {
                System.out.println( "committed:" + heapMemoryUsageMatcher.group( 1 ) );
                System.out.println( "init:" + heapMemoryUsageMatcher.group( 2 ) );
                System.out.println( "max:" + heapMemoryUsageMatcher.group( 3 ) );
                System.out.println( "used:" + heapMemoryUsageMatcher.group( 4 ) );
            }
            else {
                System.err.println("no");
            }
            if (nonHeapMemoryUsageMatcher.matches()) {
                System.out.println( "committed:" + nonHeapMemoryUsageMatcher.group( 1 ) );
                System.out.println( "init:" + nonHeapMemoryUsageMatcher.group( 2 ) );
                System.out.println( "max:" + nonHeapMemoryUsageMatcher.group( 3 ) );
                System.out.println( "used:" + nonHeapMemoryUsageMatcher.group( 4 ) );
            }
            else {
                System.err.println("no");
            }
        }
      

  4.   

        public static void main(String [] args) throws Throwable {
            String str =
                "HeapMemoryUsage: javax.management.openmbean.CompositeDataSupport(compositeType=javax.management.openmbean.CompositeType(name=java.lang.management.MemoryUsage,items=((itemName=committed,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=init,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=max,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=used,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)))),contents={committed=6496256, init=0, max=66650112, used=4241424})"
                    + "\r\nNonHeapMemoryUsage: javax.management.openmbean.CompositeDataSupport(compositeType=javax.management.openmbean.CompositeType(name=java.lang.management.MemoryUsage,items=((itemName=committed,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=init,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=max,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=used,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)))),contents={committed=35618816, init=33718272, max=121634816, used=21805632})"
                    + "\r\nObjectPendingFinalizationCount: 0 ";
            String patternstr = "\\{committed=(\\d+), init=(\\d+), max=(\\d+), used=(\\d+)\\}";
            Pattern pattern = Pattern.compile( patternstr, Pattern.DOTALL );
            Matcher matcher = pattern.matcher( str );
            int i = 0;
            while (matcher.find()) {
                if(i == 0){
                    System.out.println("HeapMemoryUsage:");
                    i++;
                }
                else {
                    System.out.println("NonHeapMemoryUsage:");
                    break;
                }
                System.out.println( "committed:" + matcher.group( 1 ) ); 
                System.out.println( "init:" + matcher.group( 2 ) ); 
                System.out.println( "max:" + matcher.group( 3 ) ); 
                System.out.println( "used:" + matcher.group( 4 ) ); 
            }
        }
      

  5.   


        public static void main(String [] args) throws Throwable {
            String str =
                "HeapMemoryUsage: javax.management.openmbean.CompositeDataSupport(compositeType=javax.management.openmbean.CompositeType(name=java.lang.management.MemoryUsage,items=((itemName=committed,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=init,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=max,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=used,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)))),contents={committed=6496256, init=0, max=66650112, used=4241424})"
                    + "\r\nNonHeapMemoryUsage: javax.management.openmbean.CompositeDataSupport(compositeType=javax.management.openmbean.CompositeType(name=java.lang.management.MemoryUsage,items=((itemName=committed,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=init,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=max,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=used,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)))),contents={committed=35618816, init=33718272, max=121634816, used=21805632})"
                    + "\r\nObjectPendingFinalizationCount: 0 ";
            String patternstr = "\\{committed=(\\d+), init=(\\d+), max=(\\d+), used=(\\d+)\\}";
            Pattern pattern = Pattern.compile( patternstr, Pattern.DOTALL );
            Matcher matcher = pattern.matcher( str );
            int i = 0;
            while (matcher.find()) {
                if (i > 1) {
                    break;
                }
                if (i == 0) {
                    System.out.println( "HeapMemoryUsage:" );
                    i++;
                }
                else {
                    System.out.println( "NonHeapMemoryUsage:" );
                    i++;
                }
                System.out.println( "committed:" + matcher.group( 1 ) );
                System.out.println( "init:" + matcher.group( 2 ) );
                System.out.println( "max:" + matcher.group( 3 ) );
                System.out.println( "used:" + matcher.group( 4 ) );
            }
        }
      

  6.   

    pattern="({committed=\\d+, init=\\d+, max=\\d+, used=\\d+})";\\这个就是模式字符串
     Pattern p = Pattern.compile("pattern");
     Matcher m = p.matcher(str);//str是上面那一堆字符串
     boolean b = m.matches();
      if(b){
        int count= m.groupCount();
        while(count>0){
          String  s=m.group(count);//这个s就是上面匹配的字符串
             //这里分割处理上面那个字符串
            count--;//循环处理其他的
        }
     }