Wyrażenia regularne

Podstawy użycia wyrażeń regularnych

Wyrażeń regularnych używamy nie tylko w kodowaniu językiem PHP. Na potrzeby naszych przykładów, użyjemy tego języka skryptowego 😉

Znajomość tych wyrażeń w prosty sposób umożliwia walidowanie danych, które są wprowadzane do formularza. Podstawą tego jest możliwość przeszukiwania ciągów znaków wg odpowiedniej regułki i porównywania ze wzorcem. Takie możliwości umożliwiają nam szereg innych działań, które stają się dostępne w kilku linijkach kodu.

Ponieważ wyrażenia regularne mają swoją własną składnię kodu, opisujemy to w poniższej tabelce:

Znaczenie symboli:

 . użycie kropki oznajmia, że szukamy dowolnego znaku jednak nie będącego znakiem nowej linii

Przykład:

.a.

(pasuje do: „rar, rak, kat”)
* gwiazdkę stawiamy po znaku który ma wystąpić wielokrotnie lub wcale (jeśli stoi po nawiasie to dotyczy zawartości tego nawiasu)

Przykład:

amo*

(pasuje do: „am, amo, amooooooooo, amoooo”)
+ plus ma podobne działanie jak kropka z tym wyjątkiem, że poprzedzający go element musi wystąpić przynajmniej jeden raz

Przykład:

amo+

(pasuje do: ” amo, amooooooooo, amoooo”)

Może też wprowadzić do wyrażenia działanie jednokrotne (bez nawrotów)

Przykład:

amo++oooo

(NIE pasuje do: ” amo, amooooooooo, amoooo”)

amo*+

amo?+

 

? znak zapytania ogranicza występienie poprzedzającego elementu do jednego wystąpienia lub wcale

Przykład:

am?

(pasuje do: ” a, am”)

Może także wprowadzić do wyrażenia zachowanie leniwe

Przykład:

*?

zero lub więcej wystąpień leniwe

+?

jedno lub więcej wystąpień leniwe

??

zero lub jedno wystąpienie leniwe

To może jeszcze odwrócić FLAGA na końcu wyrażenia U

{min,max} w nawiasach klamrowych możemy określić ilość razy wystąpienia poprzedzającego elementu. Przykładowo {2,3} określi, że element musi wystąpić przynajmniej dwa razy ale nie wiecej jak trzy razy

Przykład:

ame{2,3}

(pasuje do: „amee, ameee”) minimum to dwa wystąpienia a max trzy

ame{3}

dokładnie trzy wystąpienia

ame{2,}

minimum to dwa wystąpienia, bez maximum

ame{,2}

maximum to dwa wystąpienia, bez minimum

ame{2,3}?

znak ? określi wyrażenie leniwe

ame{2,3}+

znak + określi by było bez nawrotów
\ tym ukośnikiem można przywrócić znakom specjalnym ich zwykłe literały, np.\? będzie zwykłym znakiem zapytania
^ tego znaku używamy na samym początku aby określić od czego ma zaczynać się poszukiwanie, choć to nie jest konieczne. Natomiast użycie tego na początku w nawiasach kwadratowych [ ] neguje to co po nim jest określone w tym nawiasie. Przykład: [^23] oznacza wszystkie znaki poza cyframi 2 lub 3.

Przykład:

[^amo]*

(NIE będzie pasować do wyrazów zawierajacych choćby raz jedną z liter: „a, m, o”)
$ ten znak stawiamy na końcu celem określenia czym ma się zakończyć przeszukiwany warunek
[ ]
w nawiasach kwadratowych wpisujemy znaki jakie mogą wystapić lub ich grupy. Przykładowo jak mają wystąpić tylko cyfry to wpiszemy [0-9]

Przykład:

[0-9a]

(pasuje do: „4312, 000, 2222222, a, 452345a”)
| działa jak LUB. Przykład: (a|b) określa, że ma wystąpić litera a lub b ale nie obie. Dokładniej chodzi o to, że wybierze jedno z nich, te które wystąpi pierwsze

Przykład:

(a|b)

(ze słów: „aaaaa, abbbbbbb, amooooooooo, amoooo” wybierze tylko literę „a”)
\w skrót dla [a-zA-Z0-9_] czyli powiedzmy wszystkie znaki alfanumeryczne i podkreślenie
\W to jest negacja powyższego czyli skrót dla [^a-zA-Z0-9_]
\d określa liczbę czyli skrót dla [0-9]
\D to jest negacja powyższego czyli skrót dla [^0-9]
\n określa nową linie
\t określa znak tabulacji
\s dowolny biały znak (specjalny)
\S negacja powyższego, czyli wszystkie znaki oprócz białych
i  FLAGA – (znajduje się na końcu wyrażenia) określa brak wrażliwości na wielkość liter
U  FLAGA – wyłącza zachłanność wyrażenia (pierwsze dopasowanie jest brane pod uwagę)
g  FLAGA – wyszukuje w całym stringu (w PHP domyślnie włączone)
s  FLAGA – znak kropi bierze także wystąpienie nowej linii (\n\r)
m  FLAGA – przeszukiwanie nastąpi linia po linii (znaki końca i początku ^$ określają początek i koniec każdej z linii)
x  FLAGA – ignorowanie białych znaków (wyrażenie obejmuje komentarze zaczynające się #)
u  FLAGA – kodowanie w UTF-8
A  FLAGA – wymuszenie by znak ^ początku pasował tylko początku napisu
D  FLAGA – wymuszenie by znak $ końca pasował tylko do końca napisu
 

^\d{2}-\d{3}$

sprawdzi poprawność kodu pocztowego ( dwie cydry, po nich znak myslnika i trzy cyfry )
 

^k.*[^w]a$

to wyrażenie dopasuje do słów zaczynających się na literę k i kończących na literę a. Jednak z wyjątkiem, kiedy przedostatnia litera to w (czyli kawa NIE spełnia tego wyrażenia, ale spełnia koala)

[abc]{3}

wyrażennie określa ciąg znaków składający siez trzech liter (a,b,c). Ciąg ten może mieć długość tylko trzy. Czyli pasuje do: aaa, bbb, ccc, abc, bba…

^.7.{3}(9.{3}){2}$

wyrażenie zaczyna siedowolnym znakiem, po nim ma wystąpić cyfra siedem. Następnie dokładnie trzy dowolne znaki. Następnie w nawiasie określona dziewiątka i po niej trzy dowolne znaki. A to co w nawiasie musi wystąpić dwa razy.
[ ]

 

A teraz kilka przykładów wykorzystania wyrażeń w praktyce

 

Tu mamy przykład wyszukania wszystkich adresów url z tekstu:

Wyszukiwanie oczywiście w zmiennej tekst zostaje zapisane w tablicy tablica. Na kuńsu dwie falagi inforumją, że wyrażenia ma być niewrażliwe na wielkość liter i leniwe.

Dodaj komentarz

avatar
  Subscribe  
Powiadom o
© 2019 Tworzenie stron www - webmasterstwo - porady | WordPress Theme: Annina Free by CrestaProject.