Heim  >  Artikel  >  Java  >  Beherrschen Sie die Fähigkeiten des gierigen und nicht gierigen Modus regulärer Java-Ausdrücke

Beherrschen Sie die Fähigkeiten des gierigen und nicht gierigen Modus regulärer Java-Ausdrücke

PHPz
PHPzOriginal
2023-12-26 14:33:14930Durchsuche

Beherrschen Sie die Fähigkeiten des gierigen und nicht gierigen Modus regulärer Java-Ausdrücke

Syntaxtipps für reguläre Java-Ausdrücke: Greedy-Modus und Non-Greedy-Modus

Bei der Verwendung der regulären Ausdrücke von Java stoßen Sie häufig auf Situationen, in denen Sie so viele Zeichen wie möglich oder so wenige Zeichen wie möglich abgleichen müssen. Dies erfordert die Verwendung des Greedy-Modus und des Non-Greedy-Modus zur Steuerung der Matching-Methode. In diesem Artikel werden diese beiden Modi ausführlich vorgestellt und spezifische Codebeispiele gegeben.

1. Greedy-Modus
Greedy-Modus ist die Standard-Matching-Methode. Im Greedy-Modus gleicht der reguläre Ausdruck so viele Zeichen wie möglich ab, bis die Übereinstimmungsbedingung nicht mehr erfüllt ist.

Zum Beispiel haben wir den folgenden Text:
String text = „abc abc abc“;

Wir möchten das „abc“ in der Mitte abgleichen. Sie können den folgenden Code verwenden:
Pattern pattern = Pattern.compile(".*");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {

System.out.println(matcher.group());

}

Die Ausgabe Das Ergebnis ist „abc abc abc“, da „.*“ den Greedy-Modus verwendet und so viele Zeichen wie möglich abdeckt.

2. Nicht-Gier-Modus
Der Nicht-Gier-Modus wird durch Hinzufügen von „?“ nach dem Gier-Modus-Qualifizierer erreicht. Im nicht gierigen Modus stimmt der reguläre Ausdruck mit so wenigen Zeichen wie möglich überein, bis die Übereinstimmungsbedingung erfüllt ist.

Das Folgende ist ein Codebeispiel im Non-Greedy-Modus:
Pattern pattern = Pattern.compile(".*?");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {

System.out.println(matcher.group());

}

Das Ausgabeergebnis ist „abc“. Dies liegt daran, dass „.*?“ einen nicht gierigen Modus verwendet und nur mit dem kleinsten Zeichen übereinstimmt, das die Bedingungen erfüllt.

3. Anwendungsszenarien des Greedy-Modus und des Non-Greedy-Modus
1. Anwendungsszenarien des Greedy-Modus: Der Greedy-Modus eignet sich normalerweise für Situationen, in denen es notwendig ist, so viele Zeichen wie möglich zuzuordnen. Wenn wir beispielsweise alle Tags in einem HTML-Dokument abgleichen möchten, kann der standardmäßige Greedy-Modus alle Tags gleichzeitig abgleichen.

String html = "

Überschrift 1

Absatz 1

Überschrift 2

Absatz 2

";

Muster pattern = Pattern.compile("<.>");
Matcher matcher = pattern.matcher(html);
while (matcher.find()) {

System.out.println(matcher.group());

}

Das Ausgabeergebnis ist „< ;h1>", "", "

", "

", "

", "

", "

", "

".

2. Anwendungsszenarien des Non-Greedy-Modus

Der Non-Greedy-Modus eignet sich normalerweise für Situationen, in denen möglichst wenige Zeichen übereinstimmen müssen. Wenn wir beispielsweise alle Wörter in einem Satz abgleichen möchten, kann der standardmäßige nicht gierige Modus die Wörter einzeln abgleichen.

String-Satz = „Ich liebe Codierung“;

Mustermuster = Pattern.compile("bw+?b");
Matcher matcher = pattern.matcher(satz);
while (matcher.find()) {

System.out.println(matcher.group());

}

Die Ausgabeergebnisse sind „I“, „love“ und „coding“.

Zusammenfassend lässt sich sagen, dass der Greedy-Modus und der Non-Greedy-Modus in regulären Java-Ausdrücken sehr nützlich sind. Je nach spezifischem Bedarf kann durch Auswahl des geeigneten Modus eine bessere Übereinstimmung erzielt und die erforderlichen Informationen extrahiert werden. Ich hoffe, dass die Codebeispiele in diesem Artikel den Lesern helfen können, den Greedy-Modus und den Non-Greedy-Modus besser zu verstehen und anzuwenden.

Das obige ist der detaillierte Inhalt vonBeherrschen Sie die Fähigkeiten des gierigen und nicht gierigen Modus regulärer Java-Ausdrücke. 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