日期:2014-05-18  浏览次数:20810 次

如何计算字符串中的匹配个数
String str = "<b>两跳决定冠军</b>";
Pattern p = Pattern.compile("<(.*?)>", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
if (m.find())
 System.out.println(m.groupCount());


如上述的代码,<(.*?)>匹配标签数,但是打印出来是1而不是2,怎么样可以计算出其中的标签数呢?匹配不对还是groupCount()有问题?

------解决方案--------------------
String str = "<b>两跳决定冠军 <b><b><b><b><b></b></b></b> "; 
Pattern p = Pattern.compile("<(.*?)>", Pattern.CASE_INSENSITIVE); 
Matcher m = p.matcher(str); 
int i=0;
while (m.find()) ++i;
System.out.println(i+"次");

------解决方案--------------------
groupCount()是说(正则表达式)有几个组
------解决方案--------------------
楼主你把groupCount的含义理解错误了,它并不是指在输入序列中Pattern总共匹配了多少次

参见 http://hi.baidu.com/skychen1900/blog/item/ce8db5c26cd4a3180ef47782.html