Java Regex - Erfassen von Gruppen
Das Erfassen von Gruppen ist eine Möglichkeit, mehrere Zeichen als eine Einheit zu behandeln. Sie werden erstellt, indem die zu gruppierenden Zeichen in Klammern gesetzt werden. Beispielsweise erstellt der reguläre Ausdruck (Hund) eine einzelne Gruppe mit den Buchstaben "d", "o" und "g".
Erfassungsgruppen werden nummeriert, indem ihre öffnenden Klammern von links nach rechts gezählt werden. In dem Ausdruck ((A) (B (C))) gibt es zum Beispiel vier solche Gruppen -
- ((A)(B(C)))
- (A)
- (B(C))
- (C)
Rufen Sie die groupCount-Methode für ein Matcher-Objekt auf, um herauszufinden, wie viele Gruppen im Ausdruck vorhanden sind. Die groupCount-Methode gibt eine zurückint Zeigt die Anzahl der Erfassungsgruppen an, die im Matcher-Muster vorhanden sind.
Es gibt auch eine spezielle Gruppe, Gruppe 0, die immer den gesamten Ausdruck darstellt. Diese Gruppe ist nicht in der von groupCount gemeldeten Summe enthalten.
Beispiel
Das folgende Beispiel zeigt, wie Sie eine Ziffernfolge aus der angegebenen alphanumerischen Zeichenfolge finden.
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");
}
}
}
Dies führt zu folgendem Ergebnis:
Ausgabe
Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT300
Found value: 0