Lookarounds to asercje o zerowej szerokości. Sprawdzają regex (w prawo lub w lewo od bieżącej pozycji - w oparciu o przód lub tył), udaje się lub nie, gdy zostanie znalezione dopasowanie (na podstawie, czy jest ono dodatnie lub ujemne) i odrzuca dopasowaną część. Nie zużywają żadnych znaków - dopasowanie wyrażenia regularnego po nim (jeśli istnieje) rozpocznie się od tej samej pozycji kursora.
Przeczytaj regular-expression.info, aby uzyskać więcej informacji.
- Pozytywne spojrzenie w przyszłość:
Składnia:
(?=REGEX_1)REGEX_2
Dopasuj tylko, jeśli REGEX_1 pasuje; po dopasowaniu REGEX_1 dopasowanie zostanie odrzucone, a wyszukiwanie REGEX_2 rozpocznie się od tej samej pozycji.
przykład:
(?=[a-z0-9]{4}$)[a-z]{1,2}[0-9]{2,3}
REGEX_1 [a-z0-9]{4}$
pasuje do czterech znaków alfanumerycznych, po których następuje koniec linii.
REGEX_2 [a-z]{1,2}[0-9]{2,3}
odpowiada jednej lub dwóm literom, po których następują dwie lub trzy cyfry.
REGEX_1 upewnia się, że długość ciągu rzeczywiście wynosi 4, ale nie zużywa żadnych znaków, więc wyszukiwanie REGEX_2 rozpoczyna się w tym samym miejscu. Teraz REGEX_2 upewnia się, że łańcuch pasuje do innych reguł. Bez przewidywania pasowałby do ciągów długości trzech lub pięciu.
- Negatywne spojrzenie w przyszłość
Składnia:
(?!REGEX_1)REGEX_2
Dopasuj tylko, jeśli REGEX_1 nie pasuje; po sprawdzeniu REGEX_1 wyszukiwanie REGEX_2 rozpoczyna się w tej samej pozycji.
przykład:
(?!.*\bFWORD\b)\w{10,30}$
Część wyprzedzająca sprawdza FWORD
ciąg znaków i kończy się niepowodzeniem, jeśli go znajdzie. Jeśli nie zostanie znalezione FWORD
, przeglądanie powiedzie się, a następna część sprawdza, czy długość łańcucha wynosi od 10 do 30 i czy zawiera tylko znaki słownea-zA-Z0-9_
Spojrzenie za siebie jest podobne do patrzenia w przyszłość: po prostu spogląda za bieżącą pozycję kursora. Niektóre smaki wyrażeń regularnych, takie jak javascript, nie obsługują asertywnych stwierdzeń. I większość smaków, które go obsługują (PHP, Python itp.) Wymagają, aby ta część z tyłu miała stałą długość.
- Grupy atomowe w zasadzie odrzucają / zapominają kolejne tokeny w grupie, gdy token się dopasuje. Sprawdź tę stronę, aby zobaczyć przykłady grup atomowych