mod

Symbole występujące w wyrażeniach regularnych mogą być znakami specjalnymi lub mogą określać pewne grupy znaków o wspólnych cechach:
. – (kropka) określa dowolny znak
[a-z] – określa znak ze zbioru małych liter alfabetu bez polskich znaków
[A-Z] – określa znak ze zbioru dużych liter alfabetu bez polskich znaków
a, b, c, d, 1, 7 … – litera lub cyfra użyta we wzorcu oznacza dokładnie tą literę
[0-9] – określa cyfrę ze zbioru od 0 do 9
\s – określa dowolny biały znak (spacja, tabulator, znak nowej linii)
||Przykłady||
Słowo(ciąg) “kotek” możemy opisać za pomocą następujących wyrażeń (wzorców):
“…..”, “[a-z][a-z][a-z][a-z][a-z]“, “[a-z]otek”
————–
level 2
————–

||Teoria||
Aby nie przepisywać symboli występujących wielokrotnie po sobie możemy użyć operatorów:
* – oznacza występowanie dowolnej ilości znaków, także 0 razy
+ – oznacza występowanie dowolnej ilości znaków ale nie mniej niż raz
? – oznacza występowanie znaku tylko raz lub wcale (0 razy)
Możemy także określić wielokrotność znaku za pomocą nawiasów {}:
{3} – znak musi wystąpić dokładnie trzy razy
{3,} – znak musi wystąpić co najmniej trzykrotnie
{2,7} – znak musi wystąpić od 2 do 7 razy
||Przykłady||
Słowo(ciąg) “kotek” możemy opisać za pomocą następujących wyrażeń(wzorców):
“.*”, “[a-z]+”, “[a-z]o?t?e?k?”
————–
level 3
————–

||Teoria||
Niektóre znaki we wzorcach posiadają specjalne znaczenie,
aby ich użyć w “normalnym” znaczeniu należy je eskejpować czyli poprzedzić znakiem “\”.
||Przykłady||
Słowo(ciąg) “\s?” możemy opisać za pomocą następujących wyrażeń(wzorców):
“\\s\?”, “.{3}”, “.+”
* w mod_rewrite znak “/” jest automatycznie poprzedzany znakiem “\”
————–
level 4
————–

||Teoria||
Domyślnym dzianiem wyrażeń regularnych jest wyszukanie podciągu pasującego do wzorca w zadanym ciągu.
Aby zmienić domyślne działanie możemy użyć kotwic:
^ – oznacza że wyszukany podciąg będzie początkiem zadanego ciągu
$ – oznacza że wyszukany podciąg będzie końcówką zadanego ciągu
Użycie obu kotwic na raz powoduje to że cały zadany ciąg musi pasować do wzorca
||Przykłady||
Zdanie(ciąg) “Ala ma kota” możemy opisać za pomocą następujących wyrażeń(wzorców):
“^.*$”, “^Ala ma kota$”, “^[a-zA-Z\s]+”
————–
level 5
————–

||Teoria||
Dokładniejsze wzorce możemy uzyskać za pomocą zbiorów znaków oraz dopełnień tych zbiorów.
Zbiory znaków otrzymujemy za pomocą nawiasów [], a dopełnienia zbiorów uzyskujemy za pomocą znaku ^ (zaprzeczenia zbioru) użytego w nawiasach.
[^0-9] – wszystko tylko nie cyfra
[^a-zA-Z] – wszystko tylko nie litera
[a-zA-Z0-9] – dowolna litera lub cyfra
||Przykłady||
Zdanie(ciąg) “Ala ma kota” możemy opisać za pomocą następujących wyrażeń(wzorców):
“^[^0-9]*$”, “^[a-zA-Z0-9\s]+ma kota$”
————–
level 6
————–

||Teoria||
Działanie wyrażeń jest domyślnie zachłanne, oznacza to że operatory powtórzeń (*,+,?) danego symbolu, grupy znaków są dopasowywane do jak najdłuższego ciągu.
Możemy to zmienić używając operatorów leniwych, są dopasowywane do najkrótszego możliwego ciągu:
*? – jak najmniejsza ilość powtórzeń znaku
+? – jak najmniejsza ilość powtórzeń znaku ale nie mniej niż raz
||Przykłady||
Zdanie(ciąg) “Ala ma kota”:
- użyty wzorzec “.*?.*?” zadziała w następujący sposób: do pierwszego “.*?” nic nie zostanie dopasowane a do drugiego “.*?” zostanie dopasowane całe zdanie
- użyty wzorzec “.*.*” zadziała w następujący sposób: do pierwszego “.*” zostanie dopasowane całe zdanie a do drugiego “.*” nic nie zostanie dopasowane
————–
level 7
————–

||Teoria||
Części ciągu (podciągu) możemy przechwycić do zmiennych za pomocą nawiasów(), służą one także do grupowania znaków.
Zgrupowane znaki możemy użyć do uzyskania alternatywy (logiczne lub) za pomocą symbolu “|”.
a|b – oznacza występowanie “a” lub “b”
(ab)|(ca) – oznacza występowanie “ab” lub “ca”
||Przykłady||http://katalogstron.wordpress.com/wp-admin/page-new.php
Zdanie(ciąg) “Ala ma kota”:
- wzorzec “(Ala)|(Ewa) ma kota” pasuje także do zdania(ciągu) “Ewa ma kota”.

Post scriptum

Wyrażenia regularne możemy używać i testować za pomocą funkcji php preg_* np.: http://pl.php.net/preg-match
Wszelkie pytania i uwagi mile widziane.

Dodaj komentarz

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Zmień )

Twitter picture

You are commenting using your Twitter account. Log Out / Zmień )

Facebook photo

You are commenting using your Facebook account. Log Out / Zmień )

Connecting to %s


Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.