Java正則表達式--Matcher.group函數的用法

原來,group是針對()來說的,group(0)就是指的整個串,group(1) 指的是第一個括號裏的東西,group(2)指的第二個括號裏的東西。

最近學習正則表達式,發現Java中的一些術語與其他地方描述的有所差異。比如Java正則表達式中的“組”概念與《正則表達式必知必會》一書中講述的“子表達式”其實是一樣的,只是表述不同而已。由此也引發了使用JavaAPI時對group(int group)、start(int group)、end(int group)不是太理解。 

package com.enation.newtest;
import java.io.*;
import java.util.regex.*;
import java.net.*;

public class  MailTest{
     public static void main(String[] args) throws Exception{

         String regEx = "count(\\d+)(df)";  
         String s = "count000dfdfsdffaaaa1";  
         Pattern pat = Pattern.compile(regEx);  
         Matcher mat = pat.matcher(s);  
         if(mat.find()){
            System.out.println(mat.group(2));
         }
     }


}

輸出結果

mat.group() 輸出爲 count000df
mat.group(1) 輸出爲 000
mat.group(2) 輸出爲 df
如果沒有括號會有異常。這就是() 的作用。
如何沒有() 可以這樣寫:
public static void main(String []args){
     String regEx = "count\\d+";  
     String s = "count000dfdfsdff1";  
     Pattern pat = Pattern.compile(regEx);  
     Matcher mat = pat.matcher(s);  
    if(mat.find()){
        System.out.println(mat.group());
    }
}

但 輸出 會按照  “count\\d+”;   正則輸出.

結果是:count000

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章