csdn—正則表示式當中的捕獲組
阿新 • • 發佈:2018-12-19
捕獲組
捕獲組是把多個字元當成一個單獨的單元進行處理的方法。
這個方法是通過對括號裡面的字元進行分組來進行建立的。
打個比方來說,正則表示式(dog)建立了單一分組,組裡面是包含了”d”,”o”,”g”這三個東西的。
那麼捕獲組是什麼意思呢,就是通過從左到右計算它的開括號來編號的。
這一點是比較難以理解的。
我們再舉個例子,在表示式((A)(B(C)))當中,這裡面是有四個下面的組的。
((A)(B(C)))
(A)
(B(C))
(C)
可以通過呼叫matcher物件的groupCount方法來查看錶達式當中到底是有多少個分組的。
groupCount方法會返回一個int的值,就表示個數的。
表示的就是matcher物件當前有多個小組的。
另外,還有一個特殊的組(group(0)),這個意思是什麼呢,它總是代表整個表示式的。
這個組不包括在groupCount的返回值當中的。
為了理解這個小知識點。
我們舉個實際的例子
下面的例子說明如何從一個給定的字串當中,找到數字串。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class regex3 {
public static void main( String args[] ){
// 按指定模式在字串查詢
String line = "This order was placed for QT3000! OK?";
String pattern = "(\\D*)(\\d+)(.*)";
// 建立 Pattern 物件
Pattern r = Pattern.compile(pattern);
// 現在建立 matcher 物件
Matcher m = r.matcher(line);
if (m.find( )) {
System.out .println(m.groupCount());
for (int i = 0; i <= m.groupCount(); i++) {
System.out.println("找到了:"+m.group(i));
}
} else {
System.out.println("什麼都沒有找到");
}
}
}