[ 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