Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung des regulären Java-Wissens

Detaillierte Erläuterung des regulären Java-Wissens

尚
nach vorne
2019-11-29 13:11:332559Durchsuche

Detaillierte Erläuterung des regulären Java-Wissens

Ausdrucksbedeutung: (Empfohlen: Java-Video-Tutorial)

1. Zeichen

x Zeichen x . Beispielsweise stellt a das Zeichen a

\ Backslash-Zeichen dar. Schreiben Sie es beim Schreiben als \\. (Hinweis: Da Java beim ersten Parsen \\ in einen regulären Ausdruck\ analysiert und ihn dann beim zweiten Parsen in einen regulären Ausdruck\ analysiert, sind alle Escape-Zeichen, die nicht in 1.1 aufgeführt sind, einschließlich \ in 1.1, alles mit muss sein zweimal geschrieben)

-CASE_INSENSITIVE: Die Zuordnung von Zeichen erfolgt unabhängig von der Groß-/Kleinschreibung. Dieses Flag berücksichtigt standardmäßig nur US-ASCII-Zeichen.

‐UNICODE_CASE: In Kombination mit CASE_INSENSITIVE den Unicode-Buchstabenvergleich verwenden.

‐MULTILINE: ^ und $ entsprechen dem Anfang und Ende einer Zeile und nicht der gesamten Eingabe

‐UNIX_LINES: Beim Abgleich von ^ und $ im Mehrzeilenmodus wird nur „n“ als Zeilenabschlusszeichen betrachtet

‐DOTALL: Wenn dieses Flag verwendet wird, stimmt das Symbol mit allen Zeichen überein, einschließlich Zeilenabschlusszeichen

‐CANON_EQ: Berücksichtigen Sie die kanonische Äquivalenz von Unicode-Zeichen

8. Gieriger Quantor

X?, null oder mehrmals

X+ X, einmal oder mehrmals

X{n}

X{n,m} 🎜>

X*? mindestens n-mal

X{n,m}? 🎜>X?+ }+ X, genau n-mal

X{n,}+ >

Der Unterschied zwischen Greedy, Zurückhaltend und besitzergreifend ist: (Beachten Sie, dass dies nur anwendbar ist, wenn eine Fuzzy-Verarbeitung durchgeführt wird)

Der gierige Quantifizierer wird als „gierig“ angesehen, da er zum ersten Mal den gesamten unscharfen Zustand liest Die passende Zeichenfolge. Wenn der erste Übereinstimmungsversuch (der gesamten Eingabezeichenfolge) fehlschlägt, wird der Vergleicher ein Zeichen nach dem letzten Zeichen in der übereinstimmenden Zeichenfolge zurücksetzen und es erneut versuchen. Dieser Vorgang wird wiederholt, bis eine Übereinstimmung gefunden wird oder keine weiteren Zeichen mehr vorhanden sind kann sich zurückziehen. Je nachdem, welcher Quantor im Ausdruck verwendet wird, wird als letztes versucht, eine Übereinstimmung mit 1 oder 0 Zeichen zu finden.

Zögerliche Quantifizierer verfolgen jedoch den umgekehrten Ansatz: Sie beginnen am Anfang der Zeichenfolge, die abgeglichen wird, und lesen dann nach und nach ein Zeichen nach dem anderen, um nach einer Übereinstimmung zu suchen. Das Letzte, was sie zu finden versuchen, ist die gesamte Eingabezeichenfolge.

Schließlich liest der Possessivquantifizierer immer die gesamte Eingabezeichenfolge und versucht eine (und nur eine) Übereinstimmung. Im Gegensatz zum gierigen Quantifizierer weicht der Possessivbegriff nie zurück.

11. Logischer Operator

XY X gefolgt von Y

X|Y Beispielsweise bedeutet (abc), dass ABC als Ganzes erfasst wird

12. Rückverweis

n Jede passende n-te Erfassungsgruppe

Erfassungsgruppe kann von links nach rechts berechnet werden in offenen Klammern nummeriert. Im Ausdruck ((A)(B(C))) gibt es beispielsweise vier solcher Gruppen:

1 ((A)(B(C)))

2 A

3 (B(C))

4 (C)

Die entsprechende Gruppe kann im Ausdruck durch n referenziert werden, z. B. (ab)341 Es bedeutet ab34ab , (ab)34(cd)12 bedeutet ab34cdabcd.

13. Zitieren

Nichts, aber zitieren Sie die folgenden Zeichen

Q Nichts, aber zitieren Sie alle Zeichen bis E. Die Zeichenfolge zwischen QE wird unverändert verwendet (mit Ausnahme der Escape-Zeichen in 1.1). Zum Beispiel kann ab\Q{|}\\E

mit ab{|}\

E Nichts übereinstimmen, aber die Referenz endet ab Q

14. Spezielle Konstruktion (nicht -capturing )

(?:X) Beispiel: Der Ausdruck (?i)abc(?-i)def Zu diesem Zeitpunkt aktiviert (?i) den Schalter, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Abc stimmt mit

idmsux überein. Die Beschreibung lautet wie folgt:

‐i CASE_INSENSITIVE Der Zeichensatz :US-ASCII unterscheidet nicht zwischen Groß- und Kleinschreibung. (?i)

‐d UNIX_LINES: UNIX-Zeilenumbrüche aktivieren

‐m MULTILINE: Mehrzeilenmodus (?m)

UNIX-Zeilenumbrüche n

WINDOWS-Konvertierungszeile ist rn(?s)

‐u UNICODE_CASE: Bei Unicode wird die Groß-/Kleinschreibung nicht beachtet. (?u)

‐x KOMMENTARE: Sie können Kommentare im Muster verwenden, das Leerzeichen im Muster ignorieren und „#“ bis zum Ende verwenden (auf # folgen Kommentare). (?x) Beispielsweise kann (?x)abc#asfsdadsa die Zeichenfolge abc

(?idmsux-idmsux:X) X als nicht erfassende Gruppe mit den angegebenen Flags on – off abgleichen. Ähnlich wie oben kann der obige Ausdruck wie folgt umgeschrieben werden: (?i:abc)def oder (?i)abc(?-i:def)

(?=X) X, durch Null gehend Die Breite des positiven Lookaheads. Eine positive Lookahead-Behauptung mit der Breite Null setzt die Übereinstimmung nur dann fort, wenn der Unterausdruck X rechts von dieser Position übereinstimmt. Beispielsweise bedeutet w+(?=d) einen Buchstaben gefolgt von einer Zahl, erfasst jedoch nicht die Zahl (kein Backtracking)

(?!X) X über einen negativen Lookahead mit der Breite Null. Negative Lookahead-Behauptung mit der Breite Null. Setzen Sie den Abgleich nur fort, wenn der Unterausdruck X nicht rechts von dieser Position übereinstimmt. Beispielsweise bedeutet w+(?!d), dass auf Buchstaben keine Zahlen folgen und Zahlen nicht erfasst werden.


(? (? (?>X) X, als unabhängige, nicht erfassende Gruppe (kein Backtracking)

(?=X) Der Unterschied zwischen (?> ?> >b|bc), denn wenn letzteres mit b übereinstimmt, springt es aus der nicht erfassenden Gruppe und stimmt nicht erneut mit den Zeichen in der Gruppe überein, um den Prozess zu beschleunigen

Für weitere Java-Kenntnisse achten Sie bitte darauf zur Spalte

Java Basic Tutorial

.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des regulären Java-Wissens. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:aizhan. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen