Ausdrucksbedeutung:
x Zeichen x. Beispielsweise stellt a das Zeichen a
\ Backslash-Zeichen dar. Schreiben Sie es beim Schreiben als \\. (Hinweis: Da Java bei der ersten Analyse \\ in einen regulären Ausdruck\ analysiert und ihn dann bei der zweiten Analyse in einen regulären Ausdruck analysiert, ist jedes Escape-Zeichen, das nicht in 1.1 aufgeführt ist, einschließlich \ in 1.1, alles mit muss zweimal geschrieben werden)
(kann mit dem Zeilenabschlusszeichen übereinstimmen oder nicht)
d Zahlen: [0-9]
D Nicht-Zahlen: [^0-9]
s Leerzeichen: [tnx0Bfr]
S Nicht-Leerzeichen: [^s]
w Wortzeichen: [a-zA-Z_0-9]
W Nicht-Wortzeichen: [^w]
4. POSIX-Zeichenklasse (US nur -ASCII) (Beachten Sie, dass der Backslash zweimal geschrieben werden muss, z. B. wird p{Lower} als \p{Lower} geschrieben)
p{Lower} Alphabetische Kleinbuchstaben: [a-z].
p{Upper} Alphabetische Großbuchstaben: [A-Z]
p{ASCII} Alle ASCII: [x00-x7F]
p{Alpha} Alphabetische Zeichen: [p{Lower}p{Upper}]
p{Digit} Dezimalstellen: [0-9]
p{Alnum} Alphanumerische Zeichen: [p{Alpha}p{Digit}]
p{Punct} Satzzeichen: !"#$% &' ()*+,-./:;<=>?@[]^_`{|}~
p{Graph} Sichtbare Zeichen: [p{Alnum}p{Punct}]
p {Drucken} Druckbare Zeichen: [p{Graph}x20]
p{Leerzeichen} Leerzeichen oder Tabulatorzeichen: [t]
p{Strg} Steuerzeichen: [x00-x1Fx7F]
p{XDigit} Hexadezimale Ziffern: [0-9a-fA-F]
p{Leerzeichen} Leerzeichen: [tnx0Bfr]
5.java.lang.Character-Klasse (einfacher Java-Zeichentyp)
p{javaLowerCase} Äquivalent zu java.lang.Character.isLowerCase()
p{javaUpperCase} Äquivalent zu java.lang.Character.isUpperCase()
p{javaWhitespace} Äquivalent zu java.Character.isWhitespace()
p {javaMirrored} Äquivalent zu java.lang.Character.isMirrored()
6. Unicode-Block- und Kategorieklassen
p{InGreek} Griechischer Block (einfacher Block) Zeichen in
p{Lu} Großbuchstaben (einfach Kategorie)
p{Sc} Währungssymbole
P{InGreek} Alle Zeichen, außer in griechischen Blöcken (negiert)
[p{L }&&[^p{Lu}]] Alle Buchstaben, außer Großbuchstaben Buchstaben (Minus)
7. Boundary matcher
^ Am Anfang der Zeile steht ^ (abc) für eine Zeichenfolge, die mit abc beginnt Beim Kompilieren muss der Parameter MULTILINE festgelegt werden, z. B. Pattern p = Pattern.compile(regex,Pattern.MULTILINE);
$ Am Ende des überall verwendeten regulären Ausdrucks. Beispiel: (^bca).*(abc$) bedeutet eine Zeile, die mit bca beginnt und mit abc endet.
b Wortgrenze. Beispielsweise bedeutet b(abc), dass der Anfang oder das Ende des Wortes abc enthält (abcjj, jjabc können alle übereinstimmen)
B Nicht-Wortgrenze. Zum Beispiel bedeutet B(abc), dass die Mitte des Wortes abc enthält (jjabcjj stimmt überein, aber jjabc, abcjj stimmt nicht überein)
A Der Anfang der Eingabe
G Das Ende der vorherigen Übereinstimmung (ich persönlich Ich denke, dass dieser Parameter nutzlos ist). Beispielsweise bedeutet „\Gdog“, dass am Ende des vorherigen Treffers nach „Hund“ gesucht wird. Wenn kein Hund vorhanden ist, wird von Anfang an gesucht. Beachten Sie, dass der Anfang nicht übereinstimmen kann.
Z Ende der Eingabe, wird nur als abschließender Abschlusszeichen verwendet (falls vorhanden)
Zeilenabschlusszeichen ist eine Folge von einem oder zwei Zeichen, die das Ende einer Zeile für eine Folge von Eingabezeichen markiert.
Die folgenden Codes werden als Zeilenabschlusszeichen erkannt:
-Zeichen für eine neue Zeile (Zeilenvorschub) ('n'),
- Wagenrücklaufzeichen ("rn"), gefolgt von einem Zeichen für eine neue Zeile,
ein einzelner Wagenrücklauf ('r'),
Nächstzeilenzeichen ('u0085'),
Zeilentrennzeichen ('u2028') oder
-Absatztrennzeichen ('u2029) .
z Ende der Eingabe
Beim Kompilieren des Musters können Sie ein oder mehrere Flags setzen, zum Beispiel
Pattern pattern = Pattern.compile(patternString,Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE);
The Folgende sechs Flags werden unterstützt:
-CASE_INSENSITIVE: Die Übereinstimmung von Zeichen ist unabhängig von der Groß- und Kleinschreibung. Dieses Flag berücksichtigt standardmäßig nur US-ASCII-Zeichen.
-UNICODE_CASE: In Kombination mit CASE_INSENSITIVE erfolgt der Abgleich mit Unicode-Buchstaben.
-MULTILINE: ^ und $ entsprechen dem Anfang und Ende einer Zeile und nicht der gesamten Eingabe.
-UNIX_LINES: Beim Abgleich von ^ im mehrzeiligen Modus und $, behandeln Sie „n“ nur als Zeilenabschlusszeichen
-DOTALL: Wenn dieses Flag verwendet wird, stimmt das Symbol mit allen Zeichen überein, einschließlich Zeilenabschlusszeichen
-CANON_EQ: Berücksichtigen Sie Unicode-Zeichenspezifikationen usw. Wertigkeit
8. Gieriger Quantor
X? keines
X*? X, null oder mehrmals
X+?X{n,m}? mal
X++ X, einmal oder mehrmals
X{n}+ mal
Der Unterschied zwischen Greedy, Reluctant und Possessive ist: (Beachten Sie, dass dies nur beim Fuzzing gilt.)
Der Greedy-Quantifizierer wird als „gierig“ angesehen, da er zum ersten Mal die gesamte Fuzzy-Matching-Zeichenfolge liest . 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.
Widerstrebende 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 X oder Y
(X) X als einfangende Gruppe. Beispielsweise bedeutet (abc), dass ABC als Ganzes erfasst wird
12.Rückverweis
n Jede passende n-te Erfassungsgruppe
Erfassungsgruppe kann durch Zählen der offenen Klammern von links nach rechts nummeriert werden. 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. Beispielsweise bedeutet (ab)341 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). Beispielsweise kann ab\Q{|}\\E
mit ab{|}\
E Nichts übereinstimmen, aber die Referenz beginnt ab Q
14. Spezielle Konstruktion (nicht erfassend)
(? :X) Beispiel: Ausdruck (?i)abc(?-i)def Zu diesem Zeitpunkt aktiviert (?i) den Schalter, bei dem die Groß-/Kleinschreibung nicht beachtet wird, abc stimmt mit der
idmsux-Beschreibung überein und lautet wie folgt:
‐i CASE_INSENSITIVE: US -ASCII-Zeichensatz. Groß- und Kleinschreibung wird nicht beachtet. (?i)
‐d UNIX_LINES: UNIX-Zeilenumbrüche aktivieren
‐m MULTILINE: Mehrzeilenmodus (?m)
UNIX-Umbruchverhalten ist n
WINDOWS-Umbruchverhalten 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 mit der Zeichenfolge abc
(?idmsux-idmsux:X) X als nicht erfassende Gruppe mit den angegebenen Flags ein- und ausgeschaltet übereinstimmen. Ähnlich wie oben kann der obige Ausdruck umgeschrieben werden als: (?i:abc)def oder (?i)abc(?-i:def)
(?=X) X, durch das Nullbreiten-Positiv Ausblick. 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 dann 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, durch ein positives Lookbehind mit einer Breite von Null. Positive Post-Behauptung mit der Breite Null. Der Abgleich wird nur fortgesetzt, wenn der Unterausdruck X links von dieser Position übereinstimmt. Beispielsweise bedeutet (?<=19)99, dass vor 99 die Zahl 19 steht, die vorangehende 19 jedoch nicht erfasst wird. (Kein Backtracking)
(? (?>X) Wenn die übereinstimmende Zeichenfolge beispielsweise abcm
ist, kann sie abgeglichen werden, wenn der Ausdruck a(?:b|bc) ist, und wenn der Ausdruck a(?>b|bc) ist, kann sie auch abgeglichen werden
.
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in reguläre Java-Ausdrücke. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!