Java正則表達式捕獲組
捕獲組是將多個字符視爲一個單元的一種方法。 它們是通過將要分組的字符放在一組括號中來創建的。 例如,正則表達式(dog
)創建包含字母d
,o
和g
的單個組。
捕獲組通過從左到右計算它們的左括號來編號。 在表達式((A)(B(C))
)中,例如,有四個這樣的組 -
- ((A)(B(C)))
- (A)
- (B(C))
- (C)
要查找表達式中存在多少個組,請在匹配器對象上調用groupCount
方法。groupCount
方法返回一個int
,顯示匹配器模式中存在的捕獲組數。
還有一個特殊組,即組0
,它始終代表整個表達式。 該組未包含在groupCount
報告的總數中。
示例
以下示例說明如何從給定的字母數字字符串中查找數字字符串 -
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches {
public static void main( String args[] ) {
// String to be scanned to find the pattern.
String line = "This order was placed for QT3000! OK?";
String pattern = "(.*)(\d+)(.*)";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
} else {
System.out.println("NO MATCH");
}
}
}
執行上面示例代碼,得到以下結果:
Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT300
Found value: 0