[ Pobierz całość w formacie PDF ]
st¹pnia przecież metody oraz , które bardzo
szybko mogÄ… okreÅ›lić czy podany Å‚aÅ„cuch znaków jest cz¹Å›ciÄ… innego Å‚aÅ„cucha, a nawet
w jakim jego miejscu si¹ znajduje. Metody te można z powodzeniem zastosować w sy-
tuacjach, gdy poszukujemy ściśle określonego łańcucha znaków. Jeśli jednak należy
przeprowadzić bardziej wyszukanÄ… operacj¹ (na przykÅ‚ad, sprawdzić czy Å‚aÅ„cuch zna-
ków zawiera pi¹ciocyfrowy kod pocztowy), to wygodne metody obiektu na nic
si¹ nam nie przydadzÄ… musielibyÅ›my napisać wÅ‚asne funkcje umożliwiajÄ…ce analiz¹
Å‚aÅ„cucha znaków. I tu jednak uwidacznia si¹ caÅ‚e pi¹kno wyrażeÅ„ regularnych: pozwa-
lajÄ… one na zdefiniowanie Å‚aÅ„cucha znaków, który b¹dzie używany przy wyszukiwaniu
i na podstawie podanych wskazówek jest w stanie samodzielnie i inteligentnie okre-
ślić co odpowiada zadanym kryteriom.
Najprostsze z możliwych wyrażeÅ„ regularnych niczym si¹ nie różniÄ… od Å‚aÅ„cuchów
znaków używanych w metodzie . Taki wzorzec jest po prostu łańcu-
chem znaków, który chcemy odszukać. W j¹zyku JavaScript jednym ze sposobów two-
rzenia wyrażeÅ„ regularnych jest zapisane wyrażenia pomi¹dzy dwoma znakami ukoÅ›ni-
ka. Na przykÅ‚ad, załóżmy, że dysponujemy nast¹pujÄ…cym Å‚aÅ„cuchem znaków:
Zarówno powyższy, jak i inne łańcuchy znaków mogą być przeszukiwane przez skrypt,
którego zadaniem jest zamiana formalnych zwrotów grzecznościowych na określenia
bardziej kolokwialne. A zatem, jednym z zadaÅ„ tego skryptu jest zast¹powanie sÅ‚owa
witam słowem cześć . Typowy algorytm wyszukiwania i zamiany, określany jako
algorytm brutalnej siÅ‚y , rozpoczyna si¹ od zdefiniowania prostego wzorca, który b¹-
dzie używany przy wyszukiwaniu. W j¹zyku JavaScript taki wzorzec (wyrażenie regu-
larne) definiuje si¹ poprzez zapisanie Å‚aÅ„cucha znaków pomi¹dzy dwoma znakami uko-
Å›nika. OsobiÅ›cie, ze wzgl¹du na wygod¹ oraz w celu zachowania przejrzystoÅ›ci skryptu,
zazwyczaj zapisuj¹ wyrażenia regularne w zmiennych, tak jak to pokazaÅ‚em na poniż-
szym przykładzie:
W połączeniu z odpowiednimi metodami wyrażeń regularnych lub obiektu , po-
wyższy wzorzec umożliwi odszukanie łańcucha znaków witam w dowolnym miejscu
przeszukiwanego łańcucha. Problem polega na tym, że ten prosty wzorzec przysparza
poważnych problemów podczas operacji wyszukiwania i zast¹powania wykonywanej
w p¹tli. Wzorzec ten odnajduje bowiem nie tylko sÅ‚owo witam , lecz także zakwitam ,
powitam i inne.
Próba napisania kolejnej procedury, która metodą brutalnej siły próbowałaby odnalezć
i zastÄ…pić wyÅ‚Ä…cznie caÅ‚e sÅ‚owa, a nie ich fragmenty, mogÅ‚aby si¹ okazać prawdziwym
koszmarem. Nie wystarczy bowiem zmodyfikować wzorca przez dodanie przed nim lub
za nim (bÄ…dz też po obu jego stronach) znaku odst¹pu, gdyż zarówno przed, jak i za wyra-
zem może si¹ pojawić dowolny znak przestankowy, na przykÅ‚ad: kropka, przecinek bÄ…dz
Å›rednik. Na szcz¹Å›cie wyrażenia regularne udost¹pniajÄ… skrócony sposób pozwalajÄ…cy na
W
określenie ogólnych cech, w tym także tak zwanej granicy wyrazu . Symbolem okre-
ślającym granice wyrazu jest (odwrotny ukośnik oraz mała litera ). Jeśli zmieni-
my definicj¹ wyrażenia regularnego, tak aby po obu stronach poszukiwanego wyrazu
znalazÅ‚ si¹ symbol granicy wyrazu, to instrukcja tworzÄ…ca takie wyrażenie regularne b¹-
dzie mieć nast¹pujÄ…cÄ… postać:
Gdy interpreter JavaScriptu użyje tego wyrażenia jako argumentu wywołania metody
obiektu realizujÄ…cej operacj¹ wyszukiwania i zast¹powania, to w rezultacie zo-
stanÄ… zmienione wyÅ‚Ä…cznie caÅ‚e sÅ‚owa witam ; inne sÅ‚owa, w których wyst¹puje Å‚aÅ„-
cuch znaków zostanÄ… pomini¹te.
JeÅ›li dopiero uczysz si¹ j¹zyka JavaScript i nie dysponujesz żadnymi doÅ›wiadczeniami
zwiÄ…zanymi z wykorzystaniem wyrażeÅ„ regularnych w innych j¹zykach programowa-
nia, to za wykorzystanie ich ogromnych możliwoÅ›ci b¹dziesz niestety musiaÅ‚ sporo za-
pÅ‚acić trzeba si¹ powiem nauczyć j¹zyka tworzenia wyrażeÅ„ regularnych, który uży-
wa tylu symboli, że wyrażenia czasami wyglądają jak zbitki bezsensownych znaków,
używane w komiksach zamiast przekleństw. Niniejszy rozdział został pomyślany jedy-
nie jako przedstawienie skÅ‚adni używanej w j¹zyku JavaScript do tworzenia wyrażeÅ„
regularnych, a nie jako wyczerpujÄ…cy podr¹cznik. Duże znaczenie ma zrozumienie spo-
sobu traktowania obiektów, którymi są wyrażenia regularne przez interpreter JavaScriptu
oraz różnic pomi¹dzy tymi obiektami a statycznym obiektem . Mam nadziej¹, że
przykÅ‚ady zamieszczone w niniejszym rozdziale pokażą ci choć cz¹Å›Ä‡ ogromnych możli-
wości, jakie dają wyrażenia regularne. Wyczerpujące omówienie możliwości oraz tajni-
ków tworzenia wyrażeń regularnych można znalezć w książce Wyrażenia regularne
autorstwa Jeffreya E.F. Fridla, wydanej przez wydawnictwo Helion.
Aby wyczerpujÄ…co przedstawić skÅ‚adni¹ wyrażeÅ„ regularnych, caÅ‚ość zagadnienia po-
dzieliÅ‚em na trzy cz¹Å›ci. Pierwsza z nich poÅ›wi¹cona jest prostym wyrażeniom (których
przykÅ‚ady już widziaÅ‚eÅ›). Nast¹pnie zaprezentuj¹ wi¹cej znaków specjalnych używa-
nych podczas definiowania specyfikacji łańcucha wyszukującego. Ostatnim zagadnie-
niem b¹dzie użycie nawiasów, które nie tylko uÅ‚atwiajÄ… grupowanie wyrażeÅ„ w celu
zmiany kolejności ich wykonywania, lecz także pozwalają na tymczasowe przechowy-
wanie pośrednich wyników złożonych wyrażeń i wykorzystanie ich do modyfikacji łań-
cucha po jego podzieleniu według kryteriów określonych przez wyrażenie regularne.
Proste wyrażenia regularne, to wyrażenia, w których do definiowania łańcucha używa-
nego w wyszukiwaniu, nie są używane żadne znaki specjalne. A zatem, aby zamienić
każdy znak odst¹pu na znak podkreÅ›lenia, można użyć prostego wzorca przedstawione-
go poniżej, który odnajduje znaki odst¹pu:
l
W powyższym wyrażeniu, pomi¹dzy znakami ukoÅ›nika wyznaczajÄ…cymi poczÄ…tek
i koniec wyrażenia regularnego, zostaÅ‚ umieszczony znak odst¹pu. Jednak wyrażenie
[ Pobierz całość w formacie PDF ]