[ Pobierz całość w formacie PDF ]
tuje tryb tzw. kanonicznej równowa no ci (ang. canonical equivalence). Jak wyja niono w pod-
punkcie Grafem standardu Unicode w rozdziale 2., standard Unicode oferuje ró ne sposoby
reprezentowania znaków diakrytycznych. Po w czeniu tej opcji Twoje wyra enie regularne
b dzie pasowa o do znaków nawet wtedy, gdy zakodujesz je inaczej, ni zakodowano prze-
twarzany a cuch. Na przyk ad wyra enie zostanie dopasowane zarówno do znaku
"\u00E0", jak i do sekwencji "\u0061\u0300", poniewa obie formy s kanonicznie równo-
wa ne. Obie formy reprezentuj znak wy wietlany na ekranie jako à, zatem z perspektywy
u ytkownika s nie do odró nienia. Gdyby my nie w czyli trybu kanonicznej równowa no ci,
wyra enie nie zosta oby dopasowane do a cucha "\u0061\u0300" (tak te dzia-
aj wszystkie pozosta e odmiany wyra e regularnych prezentowane w tej ksi ce).
I wreszcie opcja Pattern.UNIX_LINES wymusza na Javie interpretowanie jako znaku podzia u
wiersza wy cznie konstrukcji (dopasowywanej do kropki, karety i dolara). Domy lnie za
znak podzia u wiersza uwa a si wszystkie znaki podzia u standardu Unicode.
JavaScript
Je li chcesz wielokrotnie stosowa to samo wyra enie regularne dla tego samego a cucha (na
przyk ad po to, by iteracyjnie przeszuka wszystkie dopasowania lub odnale i zast pi wszyst-
kie pasuj ce pod a cuchy zamiast pierwszego), powiniene u y flagi /g (tzw. trybu globalnego).
PHP
Opcja /u wymusza na bibliotece PCRE interpretowanie zarówno samego wyra enia regularnego,
jak i przetwarzanego a cucha jako a cuchów w formacie UTF-8. Wspomniany modyfikator
dodatkowo umo liwia stosowanie takich tokenów standardu Unicode, jak czy
. Znaczenie tych tokenów wyja niono w recepturze 2.7. Bez tego modyfikatora biblio-
teka PCRE traktuje ka dy bajt jako odr bny znak, a tokeny wyra e regularnych standardu
Unicode powoduj b dy.
Modyfikator /U odwraca dzia anie zach annych i leniwych kwantyfikatorów definiowanych
z wykorzystaniem znaku zapytania. W normalnych okoliczno ciach jest zach annym,
a jest leniwym kwantyfikatorem. Opcja /U powoduje, e to jest leniwym kwanty-
fikatorem, a jest zach annym kwantyfikatorem. Stanowczo odradzamy stosowanie tej
flagi, poniewa opisane dzia anie mo e by myl ce dla programistów czytaj cych Twój kod,
którzy z natury rzeczy mog nie dostrzec tego modyfikatora (wyst puj cego tylko w j zyku
PHP). Je li b dziesz mia okazj czyta kod innego programisty, w adnym razie nie powi-
niene myli modyfikatora /U z modyfikatorem /u (wielko liter w modyfikatorach trybów
wyra e regularnych ma znaczenie).
142 Rozdzia 3. Programowanie z wykorzystaniem wyra e regularnych
Perl
Je li chcesz wielokrotnie zastosowa to samo wyra enie regularne dla tego samego a cucha
(na przyk ad po to, by iteracyjnie przeszuka wszystkie dopasowania lub odnale i zast pi
wszystkie pasuj ce pod a cuchy zamiast pierwszego), powiniene u y flagi /g (tzw. trybu
globalnego).
Je li w swoim wyra eniu regularnym interpretujesz jak zmienn (na przyk ad w wyra e-
niu m/Mam na imi $name/), Perl b dzie ponownie kompilowa to wyra enie przed ka dym
u yciem, poniewa zawarto zmiennej $name mo e by zmieniana. Mo esz temu zapobiec,
stosuj c modyfikator trybu /o. Wyra enie m/Mam na imi $name/o zostanie skompilowane
w momencie, w którym Perl po raz pierwszy b dzie musia go u y (we wszystkich kolej-
nych przypadkach b dzie ponownie wykorzystywa ju skompilowane wyra enie). Je li wi c
zawarto zmiennej $name ulegnie zmianie, skompilowane wcze niej wyra enie regularne
z opcj /o nie b dzie uwzgl dnia o tej zmiany. Techniki sterowania procesem kompilacji wyra-
e regularnych omówiono w recepturze 3.3.
Python
Python oferuje dwie dodatkowe opcje zmieniaj ce znaczenie granic wyrazów (patrz recep-
tura 2.6) oraz skróconych form klas znaków , i (a tak e ich zanegowanych
odpowiedników patrz receptura 2.3). Wymienione tokeny domy lnie operuj wy cznie na
literach, cyfrach i znakach bia ych ze zbioru ASCII.
Opcja re.LOCALE (lub re.L) uzale nia interpretacj tych tokenów od bie cych ustawie regio-
nalnych. W a nie ustawienia regionalne decyduj o tym, który znak jest traktowany jako litera,
który jako cyfra, a który jako znak bia y. Z tej opcji nale y korzysta zawsze wtedy, gdy
przetwarzany a cuch nie jest a cuchem standardu Unicode i zawiera na przyk ad litery ze
znakami diakrytycznymi (które chcemy w a ciwie interpretowa ).
Opcja re.UNICODE (lub re.U) powoduje, e w procesie dopasowywania wymienionych tokenów
uwzgl dnia si specyfik standardu Unicode. Wszystkie znaki zdefiniowane w tym standar-
dzie jako litery, cyfry i znaki bia e s odpowiednio interpretowane przez te tokeny. Z tej opcji
nale y korzysta zawsze wtedy, gdy a cuch, dla którego stosujemy dane wyra enie regu-
larne, reprezentuje tekst w formacie Unicode.
Ruby
Na wej ciu fabryki Regexp.new() mo na przekaza opcjonalny, trzeci parametr okre laj cy
schemat kodowania, który ma by obs ugiwany przez tworzone wyra enie regularne. Je li nie
okre limy adnego schematu kodowania, zostanie u yty ten sam schemat, w którym zapisano
dany plik z kodem ród owym. W wi kszo ci przypadków takie rozwi zanie jest naturalne
i w pe ni prawid owe.
Aby bezpo rednio wskaza konkretny schemat kodowania za pomoc tego parametru, nale y
przekaza pojedyncz liter . Wielko u ytej litery nie ma znaczenia. Obs ugiwane warto ci
wymieniono i krótko opisano poni ej:
n
Litera n oznacza brak kodowania (od ang. none). Ka dy bajt przetwarzanego a cucha b dzie
wi c traktowany jako pojedynczy znak. Nale y stosowa t opcj dla tekstu w formacie ASCII.
3.4. Ustawianie opcji wyra e regularnych 143
e
W cza kodowanie EUC dla j zyków dalekowschodnich.
s
W cza kodowanie Shift-JIS dla j zyka japo skiego.
u
W cza kodowanie UTF-8, w którym ka dy znak jest reprezentowany przez cztery bajty
i który obs uguje wszystkie j zyki standardu Unicode (w tym wszystkie, nawet do rzadko
spotykane ywe j zyki).
Dla sta ego wyra enia regularnego mo na okre li schemat kodowania za pomoc modyfika- [ Pobierz całość w formacie PDF ]
zanotowane.pl doc.pisz.pl pdf.pisz.pl exclamation.htw.pl
tuje tryb tzw. kanonicznej równowa no ci (ang. canonical equivalence). Jak wyja niono w pod-
punkcie Grafem standardu Unicode w rozdziale 2., standard Unicode oferuje ró ne sposoby
reprezentowania znaków diakrytycznych. Po w czeniu tej opcji Twoje wyra enie regularne
b dzie pasowa o do znaków nawet wtedy, gdy zakodujesz je inaczej, ni zakodowano prze-
twarzany a cuch. Na przyk ad wyra enie zostanie dopasowane zarówno do znaku
"\u00E0", jak i do sekwencji "\u0061\u0300", poniewa obie formy s kanonicznie równo-
wa ne. Obie formy reprezentuj znak wy wietlany na ekranie jako à, zatem z perspektywy
u ytkownika s nie do odró nienia. Gdyby my nie w czyli trybu kanonicznej równowa no ci,
wyra enie nie zosta oby dopasowane do a cucha "\u0061\u0300" (tak te dzia-
aj wszystkie pozosta e odmiany wyra e regularnych prezentowane w tej ksi ce).
I wreszcie opcja Pattern.UNIX_LINES wymusza na Javie interpretowanie jako znaku podzia u
wiersza wy cznie konstrukcji (dopasowywanej do kropki, karety i dolara). Domy lnie za
znak podzia u wiersza uwa a si wszystkie znaki podzia u standardu Unicode.
JavaScript
Je li chcesz wielokrotnie stosowa to samo wyra enie regularne dla tego samego a cucha (na
przyk ad po to, by iteracyjnie przeszuka wszystkie dopasowania lub odnale i zast pi wszyst-
kie pasuj ce pod a cuchy zamiast pierwszego), powiniene u y flagi /g (tzw. trybu globalnego).
PHP
Opcja /u wymusza na bibliotece PCRE interpretowanie zarówno samego wyra enia regularnego,
jak i przetwarzanego a cucha jako a cuchów w formacie UTF-8. Wspomniany modyfikator
dodatkowo umo liwia stosowanie takich tokenów standardu Unicode, jak czy
. Znaczenie tych tokenów wyja niono w recepturze 2.7. Bez tego modyfikatora biblio-
teka PCRE traktuje ka dy bajt jako odr bny znak, a tokeny wyra e regularnych standardu
Unicode powoduj b dy.
Modyfikator /U odwraca dzia anie zach annych i leniwych kwantyfikatorów definiowanych
z wykorzystaniem znaku zapytania. W normalnych okoliczno ciach jest zach annym,
a jest leniwym kwantyfikatorem. Opcja /U powoduje, e to jest leniwym kwanty-
fikatorem, a jest zach annym kwantyfikatorem. Stanowczo odradzamy stosowanie tej
flagi, poniewa opisane dzia anie mo e by myl ce dla programistów czytaj cych Twój kod,
którzy z natury rzeczy mog nie dostrzec tego modyfikatora (wyst puj cego tylko w j zyku
PHP). Je li b dziesz mia okazj czyta kod innego programisty, w adnym razie nie powi-
niene myli modyfikatora /U z modyfikatorem /u (wielko liter w modyfikatorach trybów
wyra e regularnych ma znaczenie).
142 Rozdzia 3. Programowanie z wykorzystaniem wyra e regularnych
Perl
Je li chcesz wielokrotnie zastosowa to samo wyra enie regularne dla tego samego a cucha
(na przyk ad po to, by iteracyjnie przeszuka wszystkie dopasowania lub odnale i zast pi
wszystkie pasuj ce pod a cuchy zamiast pierwszego), powiniene u y flagi /g (tzw. trybu
globalnego).
Je li w swoim wyra eniu regularnym interpretujesz jak zmienn (na przyk ad w wyra e-
niu m/Mam na imi $name/), Perl b dzie ponownie kompilowa to wyra enie przed ka dym
u yciem, poniewa zawarto zmiennej $name mo e by zmieniana. Mo esz temu zapobiec,
stosuj c modyfikator trybu /o. Wyra enie m/Mam na imi $name/o zostanie skompilowane
w momencie, w którym Perl po raz pierwszy b dzie musia go u y (we wszystkich kolej-
nych przypadkach b dzie ponownie wykorzystywa ju skompilowane wyra enie). Je li wi c
zawarto zmiennej $name ulegnie zmianie, skompilowane wcze niej wyra enie regularne
z opcj /o nie b dzie uwzgl dnia o tej zmiany. Techniki sterowania procesem kompilacji wyra-
e regularnych omówiono w recepturze 3.3.
Python
Python oferuje dwie dodatkowe opcje zmieniaj ce znaczenie granic wyrazów (patrz recep-
tura 2.6) oraz skróconych form klas znaków , i (a tak e ich zanegowanych
odpowiedników patrz receptura 2.3). Wymienione tokeny domy lnie operuj wy cznie na
literach, cyfrach i znakach bia ych ze zbioru ASCII.
Opcja re.LOCALE (lub re.L) uzale nia interpretacj tych tokenów od bie cych ustawie regio-
nalnych. W a nie ustawienia regionalne decyduj o tym, który znak jest traktowany jako litera,
który jako cyfra, a który jako znak bia y. Z tej opcji nale y korzysta zawsze wtedy, gdy
przetwarzany a cuch nie jest a cuchem standardu Unicode i zawiera na przyk ad litery ze
znakami diakrytycznymi (które chcemy w a ciwie interpretowa ).
Opcja re.UNICODE (lub re.U) powoduje, e w procesie dopasowywania wymienionych tokenów
uwzgl dnia si specyfik standardu Unicode. Wszystkie znaki zdefiniowane w tym standar-
dzie jako litery, cyfry i znaki bia e s odpowiednio interpretowane przez te tokeny. Z tej opcji
nale y korzysta zawsze wtedy, gdy a cuch, dla którego stosujemy dane wyra enie regu-
larne, reprezentuje tekst w formacie Unicode.
Ruby
Na wej ciu fabryki Regexp.new() mo na przekaza opcjonalny, trzeci parametr okre laj cy
schemat kodowania, który ma by obs ugiwany przez tworzone wyra enie regularne. Je li nie
okre limy adnego schematu kodowania, zostanie u yty ten sam schemat, w którym zapisano
dany plik z kodem ród owym. W wi kszo ci przypadków takie rozwi zanie jest naturalne
i w pe ni prawid owe.
Aby bezpo rednio wskaza konkretny schemat kodowania za pomoc tego parametru, nale y
przekaza pojedyncz liter . Wielko u ytej litery nie ma znaczenia. Obs ugiwane warto ci
wymieniono i krótko opisano poni ej:
n
Litera n oznacza brak kodowania (od ang. none). Ka dy bajt przetwarzanego a cucha b dzie
wi c traktowany jako pojedynczy znak. Nale y stosowa t opcj dla tekstu w formacie ASCII.
3.4. Ustawianie opcji wyra e regularnych 143
e
W cza kodowanie EUC dla j zyków dalekowschodnich.
s
W cza kodowanie Shift-JIS dla j zyka japo skiego.
u
W cza kodowanie UTF-8, w którym ka dy znak jest reprezentowany przez cztery bajty
i który obs uguje wszystkie j zyki standardu Unicode (w tym wszystkie, nawet do rzadko
spotykane ywe j zyki).
Dla sta ego wyra enia regularnego mo na okre li schemat kodowania za pomoc modyfika- [ Pobierz całość w formacie PDF ]