W życiu każdego programisty pojawia się moment, w którym dowiaduje się o istnieniu czegoś takiego jak wyrażenia regularne, znanego również po skrótach regex i regexp (od regular expresssions). Czasami zetknięcie sie z tym nad wyraz potężnym narzędziem może być dosyć bolesne… wszystko za sprawą bardzo dziwnej na pierwszy rzut oka składni i olbrzymiemu skomplikowaniu. No ale czy są to powody, aby rezygnować z możliwości jakimi możemy dysponować posługując się REGEXem?
Od tego wpisu chciałbym zacząć mini-poradnik dotyczący wyrażeń regularnych – pozwoli to niedoświadczonym czytelnikom dowiedzieć się czegoś nowego, a mi w jakiś sposób utrwalić wiadomości. W tytule nie znajdziecie słowa PHP, ponieważ jest to temat dosyć elastyczny – z wyrażeniami regularnymi spotkamy się w wielu językach zarówno skryptowych jak i kompilowanych, a nawet i w innych dziedzinach np. matematyce. Mimo to, wszelkie kody będę opierał właśnie na PHP. Aby nie zaczynać od uderzenia młotem w głowę, dzisiaj nie będę prezentował żadnych praktycznych przykładów, a jedynie omówię co w ogóle leży przed wami na stole.
Czym są w ogóle wyrażenia regularne? Ciężko to zdefiniować w pełni zrozumiały dla przeciętnego człowieka sposób. Najprościej można powiedzieć, że są to wzorce opisujące symbole i całe ich ciągi. Nie należy tego jednak przedstawiać np. jako przepis na ciasto. Powiedziałbym raczej, że regex jest zbiorem różnych foremek do ciast, dzięki którym możemy dowiedzieć się, jakiemu wypiekowi się przyglądamy – sprawdzając, czy pasuje on do danej formy, czy też nie. W samym użyciu opis taki już się do końca nie sprawdza, ponieważ wyrażenia te są często wykorzystywane nie tylko do porównywania ciągu z wzorcem bazowym, ale również do wykonywania zaawansowanych operacji na ciągach wymagających np. podmiany odpowiednich elementów warunkowo.
Wyrażenia regularne możemy podzielić na 2 typy: standardu uniksowego (POSIX) oraz perlowego. Te pierwsze mają łatwiejszą składnię, lecz ich możliwości nie są tak zaawansowane jak w drugim wypadku. Z punktu widzenia języka PHP interesować nas powinny obecnie przede wszystkim wyrażenia perlowe zawarte w bibliotece PCRE oraz cała rodzina funkcji preg. Od PHP 5.3 wyrażenia standardu POSIX wykorzystywane w rodzinie funkcji ereg są oznaczone jako przestarzałe, zaś w PHP 6 zostały całkowicie usunięte. Głównym powodem są nie tylko znacznie większe możliwości idące wraz z użyciem PCRE, ale i znacznie większa wydajność, która ma w wypadku regexa naprawdę niebagatelne znaczenie. Dlatego też, wszelkie przyszłe przykłady będą opierać się na ustalonym i aktualnym standardzie, pomimo, że w książkach nie brakuje informacji o starszej metodzie.
Czy jest sens przynudzać dalej? Chyba nie. Jeżeli dotrwaliście do końca tego i tak krótkiego wpisu, możecie sobie pogratulować. Następna część mówiąca o wyrażeniach regularnych nie będzie już taka spokojna i łatwa do przetrawienia, a przynajmniej nie dla wszystkich czytelników – to mogę wam już teraz zagwarantować. Tymczasem życzę wszystkim dobrej nocy.

Brak komentarzy.
Dodaj komentarz