字符串为:
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
即可。
可以分别提供三个正则表达式进行多次匹配求出。
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
即可。
可以分别提供三个正则表达式进行多次匹配求出。
楼主【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 %
楼主加油
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");
}
}
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 ) );
}
}
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 ) );
}
}
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--;//循环处理其他的
}
}