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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM