Wyrażenia regularne. Receptury. Jan Goyvaerts. Steven Levithan

Wiesz, czym są wyrażenia regularne? A może dopiero chciałbyś się tego dowiedzieć? Jan Goyvaerts i Steven Levithan przygotowali dla Ciebie wyjątkową ucztę, a daniem głównym będą liczby i adresy.

Wyrażenia regularne to po prostu wzorzec, który określa zbiór łańcuchów znaków. Dla laików mogą przypominać czarną magię, ale w profesjonaliści mogą wyciągnąć z nich maksimum możliwości. Jak zostać specjalistą? Najlepiej jest przyswoić sobie wiedzę z „Wyrażeń regularnych” Stevena Levithana i Jana Goyvaerts.

O autorach

Steven Levithan jest ekspertem od wyrażeń regularnych w JavaScripcie. Zdobył światową sławę dzięki specjalistycznemu blogowi poświęconemu właśnie wyrażeniom. Jan Goyvaerts jest praktykiem. Prowadzi firmę Just Great Software, gdzie projektuje i tworzy programy operujące na wyrażeniach regularnych, takie jak RegexBuddy. Jest to jedyny na świecie edytor wyrażeń regularnych, który emuluje różnice dzielące aż piętnaście 15 odmian wyrażeń regularnych. Drugim jego znanym dzieckiem jest PowerGREP, czyli rozbudowane narzędzie typu grep dla systemu Microsoft Windows. Panowie połączyli swoje doświadczenia i umieścili je w przygotowanym przez nich podręczniku.

Wprowadzenie

„Wyrażenia regularne” zaczynają się od wyjaśnienia podstawowych pojęć. W końcu, jak można o nich mówić nie wiedząc do końca czym właściwie są. Warto poświęcić im trochę uwagi, bo ich znajomość może przydać się w codziennej pracy programisty. Z całą pewnością może ją ułatwić i przyspieszyć. Większa wydajność to też realna różnica w zarobkach. Na samym początku lektury przedstawiono także narzędzia do pracy z wyrażeniami regularnymi. Świadomość ich dostępności może być pierwszym krokiem do lepszego programowania. W drugim rozdziale autorzy przybliżają podstawowe techniki budowania wyrażeń regularnych. Pokazują jak dopasować stały tekst, znaki niedrukowane, jeden z wielu znaków, dowolny znak i wiele wyrazów. Dla osoby, która nigdy wcześniej nie miała kontaktu z wyrażeniami regularnymi może się wydawać, że jest to czarna magia. Jednak freelancer, który zdecyduje się na zgłębienie tej wiedzy (i oczywiście, oprócz przeczytania książki będzie ćwiczył w praktyce) może szybko pokochać wyrażenia regularne i docenić ich piękno i prostotę. Wiedza zawarta na początku książki jest bazą teoretyczną niezbędną do rozwiązywania faktycznych problemów. W następnym rozdziale autorzy skupiają się już na bardziej zaawansowanych zagadnieniach, czyli programowaniu z wykorzystaniem wyrażeń regularnych. Ich zastosowanie jest uzależnione od języka programowania dlatego też autorzy na początek krótko wyjaśniają cechy charakterystyczne każdego z nich. Jak łatwo się domyślić skupiają się przede wszystkim na najbardziej popularnych językach. Jest tak dlatego, że spotyka się je najczęściej. Czytelnicy książki najprawdopodobniej będą uczyć się właśnie na nich.

Weryfikacja danych

Następnym bardzo ważnym aspektem wyrażeń regularnych jest weryfikacja i formułowanie danych. Głównie omawiana jest weryfikacja numerów telefonu (pochodzących ze Stanów Zjednoczonych oraz międzynarodowych), a także weryfikacja adresów poczty elektronicznej. Weryfikacji poddawana jest również data i godzina. Podlegają jej nawet formy zapisu, które mogą być bardziej lub mniej tradycyjne. Weryfikować można też inne rzeczy – kody pocztowe, numery ubezpieczenia, numery ISBN, a nawet numery kart kredytowych. Przykłady dotyczą amerykańskich, brytyjskich oraz kanadyjskich numerów. Przed zastosowaniem ich w Polsce, należy trochę je dostosować do naszych realiów. Co ciekawe, w książce przedstawiono też sposób na zmianę formatu nazwisk z „imię, nazwisko” na „nazwisko, imię”. Może wydawać się, że wiedza ta jest nieprzydatna, ale to nieprawda. Korzysta się z niej raczej rzadko, ale wtedy jest niezbędna i po prostu ułatwia życie programisty. Łatwo wyobrazić sobie sytuację, że na liście znajduje się tysiąc nazwisk. Ręczne zmienianie kolejności w każdym z nich – zajęło by mnóstwo czasu, który mógłby zostać wykorzystany bardziej owocnie. Mało tego, mogłoby doprowadzić do furii nawet świętego.

Liczby i adresy

Sporo miejsca w książce poświęcono liczbom – całkowitym, szesnastkowym, binarnym, rzymskim, zmiennoprzecinkowym, itd. Ich znajomość może znacznie ułatwić pracę z nimi. Zebranie wszystkich niezbędnych informacji w jednym miejscu jest rozwiązaniem niezwykle wygodnym i praktycznym. Programista nie musi wertować kilkunastu specjalistycznych podręczników. Wszystko zostało zebrane w jednej książce. „Wyrażenia regularne” zajmują się także adresami URL, ścieżkami i adresami internetowymi. Pokazują jak weryfikować adresy i jak odnajdywać je w dłuższym tekście. Ponadto, szczegółowo przedstawiono jak interpretować adres URL i jak wyodrębnić z niego poszczególne elementy – nazwę użytkownika, nazwę hosta, nazwę portu, ścieżki z adresu, zapytania i fragmentu. To swoiste kompendium wiedzy z tego tematu. Ostatnia część dotyczy już języka znaczników i formatu wymiany danych. Są to informacje już bardzo zaawansowane. Levithan opisuje jak odnajdywać znaczniki XML-a, jak je znajdować i jak zastępować. Oprócz tego porusza też zagadnienia związane z dopasowywaniem nazw, usuwaniem komentarzy, odnajdywaniem konkretnych słów w nich zawartych, a nawet odnajdywaniem konkretnych atrybutów w znacznikach XML-a.

Jak książka kucharska!

Warto też zauważyć, że książka została napisana w wyjątkowo ciekawy sposób. Jej oryginalny tytuł „Regular Expression. Cookbook” nawiązuje do książki kucharskiej. Dlaczego? Dlatego, że ta książka to nie tylko sucha teoria, ale wiele przykładów z życia wziętych. Każdy z problemów został omówiony szczegółowo, krok po kroku. Dokładnie tak, jak przedstawiane są przepisy w książkach kucharskich. Taka forma jest przejrzysta i przystępna. Każdy, kto chciałby poznać wyrażenia regularne łatwo się w niej odnajdzie i szybko odszuka odpowiedzi na swoje pytania. Każdy podrozdział został podzielony na wiele krótkich części. Wyodrębniono problem oraz zaproponowano rozwiązania. Co ważne – podano je dla kilku najważniejszych języków programowania – C#, VB.NET, Java, Python, JavaScript, PHP, Perl, Ruby. Na koniec, każdy problem zostaje poddany krótkiej analizie. Dzięki takiej formule książka jest niezwykle przejrzysta i przystępna.