suchen
Heim类库下载java类库Der Unterschied zwischen Greedy Reluctant Possessive in regulären Java-Ausdrücken

Aus der offiziellen Java-Dokumentation http://docs.Oracle.com/javase/7/docs/api/java/util/regex/Pattern.html können wir sehen, dass reguläre Ausdrücke Quantoren darstellen. Es gibt drei Sätze von Symbole, nämlich gierig, zurückhaltend und besitzergreifend. Die Bedeutung ist wie folgt:

Der Unterschied zwischen Greedy Reluctant Possessive in regulären Java-Ausdrücken

Der Unterschied zwischen Gierig, Zurückhaltend und Possessiv

Beispiele

Siehe die Tabelle oben , stellen wir fest, dass die Bedeutung der drei Quantoren gleich ist (zum Beispiel bedeuten X?, X?? und X? alle einmal oder nicht einmal), es gibt jedoch immer noch einige subtile Unterschiede zwischen ihnen. Schauen wir uns zunächst ein Beispiel an:

1.Gierig

public static void testGreedy() {  
    Pattern p = Pattern.compile(".*foo");  
    String strText = "xfooxxxxxxfoo";  
    Matcher m = p.matcher(strText);  
    while (m.find()) {  
        System.out.println("matched form " + m.start() + " to " + m.end());  
    }  
}

Ergebnis:

Übereinstimmung von 0 bis 13

2.Zögerlich

public static void testReluctant() {  
    Pattern p = Pattern.compile(".*?foo");  
    String strText = "xfooxxxxxxfoo";  
    Matcher m = p.matcher(strText);  
    while (m.find()) {  
        System.out.println("matched form " + m.start() + " to " + m.end());  
    }  
}

Ergebnis:

Übereinstimmung mit Form 0 bis 4

Übereinstimmung mit Form 4 bis 13

3.Possessiv

public static void testPossessive() {  
    Pattern p = Pattern.compile(".*+foo");  
    String strText = "xfooxxxxxxfoo";  
    Matcher m = p.matcher(strText);  
    while (m.find()) {  
        System.out.println("matched form " + m.start() + " to " + m.end());  
    }  
}

Ergebnis:

//Erfolgreich nicht abgeglichen

Grundsatzerklärung

Der Greedy-Quantifizierer wird „gierig“ genannt, da der Matcher beim ersten Versuch gezwungen ist, die gesamte Übereinstimmung zu lesen Eingabezeichenfolge, Wenn der erste Übereinstimmungsversuch fehlschlägt, gehen Sie Zeichen für Zeichen von hinten nach vorne zurück und versuchen Sie es erneut, bis die Übereinstimmung erfolgreich ist oder keine Zeichen mehr vorhanden sind, zu denen Sie zurückkehren können.

Musterzeichenfolge: .*foo

Suchzeichenfolge: xfooxxxxxxfoo

Ergebnis: Übereinstimmung von 0 bis 13

Der Vergleichsprozess ist wie folgt

Der Unterschied zwischen Greedy Reluctant Possessive in regulären Java-Ausdrücken

Reluctant verwendet die entgegengesetzte Methode zu Greedy. Es beginnt an der ersten (Zeichen-)Position der Eingabezeichenfolge und liest nur widerstrebend ein Zeichen in einer passenden Suche, bis es versucht, das Ganze zu vervollständigen Zeichenfolge.

Musterzeichenfolge: .*foo

Suchzeichenfolge: xfooxxxxxxfoo

Ergebnis: übereinstimmende Form 0 bis 4

übereinstimmende Form 4 bis 13

Der Vergleichsprozess läuft wie folgt ab:

Der Unterschied zwischen Greedy Reluctant Possessive in regulären Java-Ausdrücken

Possessive Quantifier liest immer die gesamte Eingabezeichenfolge und versucht einmal (und nur einmal), eine erfolgreiche Übereinstimmung herzustellen, Rollback erfolgt bei Possessive nie . Auch wenn dies der Fall ist, kann das Spiel insgesamt erfolgreich sein.

Musterzeichenfolge: .*foo

Suchzeichenfolge: xfooxxxxxxfoo

Ergebnis:

//Nicht übereinstimmend erfolgreich

Der Vergleichsprozess As folgt

Der Unterschied zwischen Greedy Reluctant Possessive in regulären Java-Ausdrücken

Referenzartikel: http://docs.oracle.com/javase/tutorial/essential/regex/quant.html

Lassen Sie uns einen Blick darauf werfen noch ein paar Beispiele:

Musterzeichenfolge:

Musterzeichenfolge: . ?[0-9]

Suchzeichenfolge: abcd5aabb6

Ergebnis: passende Form 0 bis 4

Musterzeichenfolge:.{1,9} [0-9]

Suchzeichenfolge: abcd5aabb6

Ergebnis: Übereinstimmung von 0 bis 10

Musterzeichenfolge: .{1,10} [0-9]

Suchzeichenfolge: abcd5aabb6

Ergebnis: Übereinstimmung fehlgeschlagen


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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft