Heim  >  Artikel  >  Java  >  Wie funktionieren Erfassungsgruppen in regulären Java-Ausdrücken?

Wie funktionieren Erfassungsgruppen in regulären Java-Ausdrücken?

Susan Sarandon
Susan SarandonOriginal
2024-10-28 22:25:30653Durchsuche

How do Capturing Groups Work in Java Regular Expressions?

Grundlegendes zu Java-Regex-Erfassungsgruppen

In diesem Codeausschnitt verwenden wir die reguläre Ausdrucksbibliothek (Regex) von Java, um Teile einer Zeichenfolge zu extrahieren. Der reguläre Ausdruck ist definiert als „(.)(d )(.)“, wobei:

  • (.*): Entspricht einer beliebigen Anzahl beliebiger Zeichen vor der nächsten Gruppe.
  • (d): Entspricht einer beliebigen Anzahl von Ziffern nach der vorherigen Gruppe.
  • (.*): Entspricht einer beliebigen Anzahl von Zeichen nach der vorherigen Gruppe.

Regex-Ausführung

Wenn der Regex für die Zeichenfolge „Diese Bestellung wurde für QT3000 aufgegeben! OK?“ ausgeführt wird, werden die folgenden Ergebnisse erzeugt:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

Gierige Quantifizierer verstehen

Der in der Regex verwendete Standardquantifizierer ist gierig, was bedeutet, dass er so viele Zeichen wie möglich abgleicht, um die nächste Gruppe zu erfüllen. In diesem Fall stimmt „.*“ mit der gesamten Zeichenfolge überein, bis die erste Ziffer gefunden wird, sodass keine Zeichen für die dritte Gruppe übrig bleiben.

Verwendung widerstrebender Quantifizierer

Zur Übereinstimmung Um nur die erforderlichen Zeichen anzuzeigen, können wir einen Quantifizierer verwenden, der durch ein Fragezeichen gekennzeichnet ist. Das Ersetzen von „(.)“ durch „(.?)“ entspricht der geringstmöglichen Anzahl an Zeichen, was zu der folgenden Ausgabe führt:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

Vorteile der Erfassung von Gruppen

Durch die Erfassung von Gruppen können wir bestimmte Teile einer passenden Zeichenfolge zur weiteren Verwendung extrahieren. In diesem Beispiel können wir über die „group()“-Methode des „Matcher“-Objekts auf den übereinstimmenden Wert jeder Gruppe zugreifen, wie im folgenden Codeausschnitt gezeigt:

<code class="java">Pattern pattern = Pattern.compile("(.*?)(\d+)(.*)");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
    System.out.println("group 1: " + matcher.group(1));
    System.out.println("group 2: " + matcher.group(2));
    System.out.println("group 3: " + matcher.group(3));
}</code>

Das obige ist der detaillierte Inhalt vonWie funktionieren Erfassungsgruppen in regulären Java-Ausdrücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn