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.
Absatz 1
Absatz 2
";Muster pattern = Pattern.compile("<.*?>");
Matcher matcher = pattern.matcher(html);
while (matcher.find()) {
System.out.println(matcher.group());
", "
", "", "
". 2. Anwendungsszenarien des Non-Greedy-ModusDer 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.
Mustermuster = Pattern.compile("bw+?b");
Matcher matcher = pattern.matcher(satz);
while (matcher.find()) {
System.out.println(matcher.group());
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!