首先弄明白Java的正則表達式中捕獲組的概念,也就是以括號對“()”分割出的子Pattern,為什么要用到子模式呢?這是為了能在一次匹配中找出關心部分,例如:
input: abbc
pattern:a(b*)c
group0: a(b*)c
group1:(b*)
整個pattern是可以匹配abbc的,group()方法就是獲得當前查找里面整個pattern所匹配的子序列,所以你可以通過group()找到“abbc”;
與此同時,我還對其中的b的個數感興趣,就可以通過group1來得到關于(b*)的匹配情況,group(i)就是獲得當前查找里面指定的捕獲組所匹配的子序列,所以你可以通過group(0)來找到“bb”;
上面說清楚了,groupCount()的含義就很容易明白了,它并不是指在輸入序列中Pattern總共匹配了多少次,而是指的捕獲組的個數,當然它不對“整個pattern”計數,而只對“子Pattern”計數,如上例中groupCount()返回1,而如果我們將input改為“abbc abbc abbc”,——有三次匹配——groupCount()還是返回1 ;
好了,我想廢了半天話,概念應該講清楚了,希望日后能記在腦袋里,不要天天來煩blogger.com:P
注意:group(i)是在group()的結果中再匹配
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/