[ Pobierz całość w formacie PDF ]

wciąż miałaby wartość , gdyż interpreter założyłby, że nie mają być wykonywane żad-
ne kolejne wyszukiwania.
W wyniku wykonania metody w wielu właściwościach obiektu zostały
zapisane informacje dotyczące wyników wyszukiwania:
W
Obiekt.nazwaWłaściwości Wartość
Z tego obiektu można odczytać odnaleziony łańcuch znaków pasujący do definicji wy-
rażenia regularnego. Dost�pne są także segmenty głównego łańcucha znaków znajdują-
ce si� przed oraz za odnalezionym ciągiem (w naszym przykładzie, we właściwości
za słowem znajduje si� jeszcze znak odst�pu). Przeglądając tablic�
zwróconą przez wywołanie metody możemy si� przekonać, iż mamy możliwość
uzyskania dost�pu do kolejnych informacji:
Obiekt.nazwaWłaściwości Wartość
Pierwszym elementem tablicy posiadającym indeks 0, jest odnaleziony łańcuch zna-
ków pasujący do wyrażenia regularnego. A zatem, element ten ma t� samą wartość,
co właściwość . Dost�pna jest także pełna wersja łańcucha główne-
go, przechowywana we właściwości . Informacją, która może mieć duże zna-
czenie dla skryptu jest indeks określający w jakim miejscu łańcucha głównego odna-
leziono fragment pasujący do wyrażenia regularnego. Informacja ta jest zapisywana
we właściwości . Dysponując tym indeksem oraz pozostałymi informacjami
przechowywanymi w tablicy danych odnalezionych, możemy uzyskać te same łańcu-
chy, które są przechowywane we właściwościach (ten łańcuch
można pobrać przy użyciu wyrażenia
) oraz (z kolei ten łańcuch można pobrać przy użyciu wy-
rażenia ).
Ponieważ definiując wyrażenie regularne zażądałem, aby miało ono zasi�g globalny
(dodając do niego modyfikator ), wi�c, bez konieczności wprowadzania jakichkolwiek
zmian, mog� ponownie wywołać metod� . Choć kolejne wywołanie tej metody
nie różni si� od pierwszego wywołania, metoda rozpoczyna przeszukiwanie łańcucha
głównego od miejsca wskazanego przez nową wartość właściwości . Na
skutek tego kolejnego wywołania metody zmianie ulegną właściwości wszyst-
kich trzech powiązanych ze sobą obiektów:
Wyniki drugiego wywołania metody przedstawiłem w poniższej tabeli:
l
Obiekt.nazwaWłaściwości Wartość
Z uwagi na odnalezienie kolejnego fragmentu pasującego do wyrażenia regularnego,
metoda ponownie zwraca tablic� zawierającą nowe dane. Właści-
wość tej tablicy wskazuje teraz miejsce łańcucha głównego, w którym rozpoczy-
na si� odnaleziony fragment pasujący do wyrażenia regularnego. Z kolei właściwość
obiektu wyrażenia regularnego wskazuje w jakim miejscu rozpocznie si�
kolejne wyszukiwanie (bezpośrednio za drugim słowem ). Odpowiednio zostały także
zmodyfikowane wartości właściwości oraz .
Gdyby wzorzec zdefiniowany za pomocą wyrażenia regularnego nie określał jednego,
wybranego słowa, to także niektóre inne właściwości tych trzech obiektów mogłyby
ulec zmianie. Na przykład, gdyby wyrażenie regularne zawierało definicj� formatu sto-
sowanego do zapisywania kodu pocztowego, to właściwości oraz
zawierałyby aktualną odnalezioną wartość kodu, która zapewne za każdym
razem byłaby inna.
Po kolejnym  trzecim  wywołaniu metody w głównym łańcuchu znaków
( ) nie zostanie już odnaleziony kolejny fragment pasujący do wyrażenia re-
gularnego. Z tego faktu nie wynikają jednak żadne komplikacje. Przede wszystkim, tym
razem metoda zwróci wartość , sygnalizując w ten sposób skryptowi, że nie
został już odnaleziony żaden fragment pasujący do wyrażenia regularnego. Właściwość
obiektu wyrażenia regularnego ponownie przyjmuje wartość 0, przygotowu-
jąc w ten sposób rozpocz�cie przeszukiwania od początku innego łańcucha znaków.
Jednak najważniejsze jest to, iż właściwości obiektu zachowują swoje wcze-
śniejsze wartości. Dzi�ki temu, jeśli umieścimy wywołania metody w p�tli, któ-
rej wykonywanie zakończy si� w chwili gdy nie zostanie odnaleziony żaden łańcuch
pasujący do podanego wyrażenia regularnego, to po zakończeniu tej p�tli obiekt
wciąż b�dzie zawierać informacje o ostatnim odnalezionym fragmencie, których b�dzie
można użyć w dalszej cz�ści skryptu.
W
Pomimo pozornie skomplikowanego, ukrytego sposobu działania wyrażeń regularnych,
j�zyk JavaScript zawiera grup� metod, dzi�ki którym wykonywanie najcz�stszych za-
dań wykorzystujących wyrażenia regularne jest całkiem proste (przy założeniu, że uda
Ci si� stworzyć dobre wyrażenie regularne). W tym podrozdziale przedstawi� sposoby
realizacji kilku typów zadań, w których pomocne okazują si� wyrażenia regularne.
Wspominałem wcześniej, że do sprawdzenia czy określony łańcuch znaków stanowi
cz�ść wi�kszego łańcucha można wykorzystać metody lub
. Jeśli jednak podczas wyszukiwania konieczne jest wykorzystanie moż-
liwości, jakie zapewniają wyrażenia regularne, to można si� posłużyć dwiema innymi
metodami:
Pierwsza z nich jest metodą obiektu wyrażenia regularnego, a druga metodą obiektu
. Obie te metody wykonują te same zadania i oddziałują na te same obiekty,
zwracają jednak inne wartości. Metoda zwraca wartość logiczną, natomiast me-
toda przesuni�cie odnalezionego fragmentu od początku łańcucha lub wartość
, jeśli pasujący fragment nie został odnaleziony. Wybór jednej z tych metod zależy od
tego, czy w skrypcie potrzebna jest jedynie wartość logiczna określająca czy odnalezio-
no łańcuch pasujący do wyrażenia regularnego, czy też położenie tego łańcucha.
Przykład przedstawiony na listingu 38.1 przedstawia sposób wykorzystania obu tych
metod. Strona zawiera domyślny tekst oraz wyrażenie regularne pozwalające na odnaj-
dywanie pi�ciocyfrowych liczb. W tym skrypcie obiekt wyrażenia regularnego jest two- [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • tibiahacks.keep.pl