Lookarounds sind Behauptungen mit Nullbreite. Sie suchen nach einem Regex (rechts oder links von der aktuellen Position - basierend auf "vor" oder "hinter"), sind erfolgreich oder nicht erfolgreich, wenn eine Übereinstimmung gefunden wird (basierend darauf, ob sie positiv oder negativ ist) und verwerfen den übereinstimmenden Teil. Sie verbrauchen kein Zeichen - der Abgleich für die nachfolgende Regex (falls vorhanden) beginnt an der gleichen Cursorposition.
Lesen Sie regelmäßiger-ausdruck.info für weitere Einzelheiten.
Syntax:
(?=REGEX_1)REGEX_2
Übereinstimmung nur, wenn REGEX_1 übereinstimmt; nach der Übereinstimmung mit REGEX_1 wird die Übereinstimmung verworfen und die Suche nach REGEX_2 beginnt an derselben Position.
Beispiel:
(?=[a-z0-9]{4}$)[a-z]{1,2}[0-9]{2,3}
REGEX_1 ist [a-z0-9]{4}$
die auf vier alphanumerische Zeichen, gefolgt von einem Zeilenende, passt.
REGEX_2 ist [a-z]{1,2}[0-9]{2,3}
die einem oder zwei Buchstaben, gefolgt von zwei oder drei Ziffern, entspricht.
REGEX_1 stellt sicher, dass die Länge der Zeichenfolge tatsächlich 4 beträgt, verbraucht aber keine Zeichen, so dass die Suche nach REGEX_2 an derselben Stelle beginnt. Jetzt stellt REGEX_2 sicher, dass die Zeichenkette einigen anderen Regeln entspricht. Ohne Vorausschau würde sie auf Zeichenketten der Länge drei oder fünf passen.
Syntax:
(?!REGEX_1)REGEX_2
Übereinstimmung nur, wenn REGEX_1 nicht übereinstimmt; nach der Überprüfung von REGEX_1 beginnt die Suche nach REGEX_2 an derselben Stelle.
Beispiel:
(?!.*\bFWORD\b)\w{10,30}$
Der Vorausschau-Teil prüft, ob die FWORD
in der Zeichenkette und schlägt fehl, wenn er sie findet. Wenn sie nicht gefunden wird FWORD
ist die Vorausschau erfolgreich, und der folgende Teil überprüft, ob die Länge der Zeichenfolge zwischen 10 und 30 liegt und ob sie nur Wortzeichen enthält a-zA-Z0-9_
Look-behind ist ähnlich wie look-ahead: Es schaut nur hinter die aktuelle Cursorposition. Einige Regex-Varianten wie Javascript unterstützen keine Look-Behind-Assertions. Und die meisten Flavors, die sie unterstützen (PHP, Python usw.), verlangen, dass der look-behind-Teil eine feste Länge hat.
- Atomic groups verwirft/vergisst grundsätzlich die nachfolgenden Token in der Gruppe, sobald ein Token passt. Auf dieser Seite finden Sie Beispiele für Atomare Gruppen