Wyrażenia regularne (RegEx)
W PHP nie używaj ereg()
Wyrażenia regularne to specjalny sposób opisywania szukanego tekstu, w którym niektóre znaki (metaznaki) posiadają inną funkcjonalność, niż oznaczanie symbolu. Wyrażenia regularne wykorzystywane są przez przez funkcje wyszukujące fragmenty tekstu.
Metaznaki
- .
- kropka oznacza dowolny wyświetlany znak (czyli wszystkie opórcz białych znaków)
- [zakres znaków]
-
nawiasy kwadratowe usciślają zakres możliwych znaków, np.
[a-z0-9]
. - -
- użyty w nawiasach kwadratowych pomiędzy dwoma znakami oznacza przedział znaków, nie trzeba poprzedzać go ukośnikiem (jeśli stoi przed nawiasem kwadratowym zamykającym, nie trzeba poprzedzać go ukośnikiem)
- \
- ukośnik służy do oznaczania metaznaków jako zwykłe znaki
- (ciąg znaków)
- nawiasy okrągłe grupują ciągi znaków. Ciągi te są zapamiętywane i mogą być potem zwrócone przez funkcje operujące na wyrażeniach regularnych.
- ^
- "daszek" użyty na początku ciągu oznacza początek ciągu; użyty jako pierwszy w nawiasach kwadratowych oznacza „wszystkie oprócz” (jeśli stoi za innymi znakami, nie trzeba poprzedzać go ukośnikiem)
- $
- dolar oznacza koniec ciągu
- |
- alternatywa użyta w nawiasach okrągłych służy to oznaczenia alternatywy ciągów znaków
- *
- asteriks oznacza zero lub więcej wystąpień znaku/nawiasu przed nim
- ?
- znak zapytania oznacza zero lub jeden poprzedzający znak/nawias
- +
- znak plus oznacza jeden lub więcej poprzedzających znaków/nawiasów
- {m}
- liczba w nawiasie klamrowym oznacza dokładnie „m” poprzedzających znaków
- {m,}
- liczba w nawiasie klamrowym z przecinkiem oznacza „m” lub więcej poprzedzających znaków
- {m, n}
- para liczb w nawiasie klamrowym oznacza przedział od „m” do „n” poprzedzających znaków
Klasy znakowe
Klasy znakowe są to grupy znaków, które należy umieszczać w nawiasach kwadratowych (zamiast wypisywania znaków lub przedziałów). Są to:
Oznaczenie | Grupa znaków |
---|---|
\w | Znaki wyrazów |
\W | Znaki inne niż wyrazów |
\d | Cyfry |
\D | Znaki inne niż cyfry |
\s | Białe znaki |
\S | Znaki inne niż białe znaki |
[:alnum:] | Znaki alfanumeryczne |
[:alpha:] | Litery |
[:digit:] | Cyfry |
Budowa
Wyrażenie posiada następującą budowę: [separator]ciąg znaków[seperator][modyfikatory], gdzie:
- [separator] — znak uzyskujący specjalne znaczenie (staje się meta znakiem), służy do ograniczenia szukanego ciągu
- ciąg znaków — szukany ciąg znaków, można tutaj używać wszystkich znaków, ale nalezy wziąść pod uwagę ich specjalne znaczenie
- [modyfikatory] — opisane poniżej
Modyfikatory
Są to znaki globalnie zmieniające wyrażenie.
- i (case insensitive)
- wprowadza tryb nierozróżniania wielkości znaków
- m (multiline)
-
Powoduje, że
^
i$
pasują do początku i końca każdej linii, a nie tylko całego ciągu. - u (UTF-8)
- Bez tego modyfikatora u wielobajtowe znaki UTF-8 będą traktowane jako kilka znaków.
uzupełnic innymi modyfikatorami
Przykłady
- Zaznaczanie adresu e-mail:
|[^@]+@.+\..{2,4}|
- Zaznaczanie adresu strony:
;(http://|www\.).*;i
Zmodyfikowano: 18.09.2006, 16:36