Wyrazenia regularne Wprowadzenie wyrawp


Tytuł oryginału: Introducing Regular Expressions
Tłumaczenie: Robert Górczyński
ISBN: 978-83-246-6868-7
2013 Helion S.A.
Authorized Polish translation of the English edition Introducing Regular Expressions, ISBN
9781449392680 Michael Fitzgerald.
This translation is published and sold by permission of O Reilly Media, Inc., which owns or
controls all rights to publish and sell the same.
All rights reserved. No part of this book may be reproduced or transmitted in any form
or by any means, electronic or mechanical, including photocopying, recording or by
any information storage retrieval system, without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu
niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą
kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym,
magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądz
towarowymi ich właścicieli.
Wydawnictwo HELION dołożyło wszelkich starań, by zawarte w tej książce informacje
były kompletne i rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich
wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub
autorskich. Wydawnictwo HELION nie ponosi również żadnej odpowiedzialności za
ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/wyrawp
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
" Kup książkę " Księgarnia internetowa
" Poleć książkę " Lubię to! Nasza społeczność
" Oceń książkę
SPIS TRE CI
Wprowadzenie ........................................................................................... 7
1. Czym s wyra enia regularne? ..................................................... 13
Poznaj aplikacj RegexPal 14
Dopasowanie numeru telefonu
w formacie stosowanym w Ameryce Pó nocnej 16
Dopasowanie cyfr za pomoc klasy znaków 17
U ywanie znaków skrótów 18
Dopasowanie dowolnego znaku 19
Grupy przechwytywania i odwo ania wsteczne 19
U ywanie kwantyfikatorów 20
U ywanie dos ownych znaków 21
Przyk ady aplikacji 23
Czego dowiedzia e si z rozdzia u 1.? 25
Informacje techniczne 26
2. Proste dopasowanie wzorca ......................................................... 27
Dopasowanie dos ownego ci gu tekstowego 29
Dopasowanie cyfr 30
Dopasowanie znaków innych ni cyfry 32
Dopasowanie s ów i znaków nieb d cych s owami 32
Dopasowanie znaku niewidocznego 35
Dopasowanie dowolnego znaku, po raz kolejny 37
3
Kup książkę Poleć książkę
Oznaczanie tekstu 39
Czego dowiedzia e si z rozdzia u 2.? 43
Informacje techniczne 44
3. Granice ...........................................................................................47
Pocz tek i koniec wiersza 47
Granice s owa i nies owa 49
Inne kotwice 52
Okre lenie grupy znaków jako dos ownych 53
Dodawanie znaczników 54
Czego dowiedzia e si z rozdzia u 3.? 58
Informacje techniczne 59
4. Alternatywy, grupy i odniesienia ................................................. 61
Alternatywy 62
Podwzorce 65
Grupy przechwytywania i odwo ania wsteczne 67
Grupy nieprzechwytuj ce 70
Czego dowiedzia e si z rozdzia u 4.? 73
Informacje techniczne 73
5. Klasy znaków ................................................................................. 75
Negacja klasy znaków 77
Z czenia i ró nice 77
Klasy znaków POSIX 80
Czego dowiedzia e si z rozdzia u 5.? 82
Informacje techniczne 82
6. Dopasowanie Unicode i innych znaków .......................................83
Dopasowanie znaku Unicode 84
Dopasowanie znaków liczb ósemkowych 88
Dopasowanie w a ciwo ci znaku Unicode 88
Dopasowanie znaków kontrolnych 92
Czego dowiedzia e si z rozdzia u 6.? 94
Informacje techniczne 94
4 Spis tre ci
Kup książkę Poleć książkę
7. Kwantyfikatory .............................................................................. 97
Zach anne, leniwe i zaborcze 98
Dopasowanie za pomoc *, + oraz ? 99
Dopasowanie okre lon liczb razy 100
Kwantyfikatory leniwe 101
Kwantyfikatory zaborcze 103
Czego dowiedzia e si z rozdzia u 7.? 104
Informacje techniczne 104
8. Przewidywania ............................................................................ 105
Przewidywanie pozytywne 105
Przewidywania negatywne 108
Pozytywne przewidywanie wsteczne 109
Negatywne przewidywanie wsteczne 109
Czego dowiedzia e si z rozdzia u 8.? 110
Informacje techniczne 110
9. Dodawanie znaczników HTML5 do dokumentu ......................... 111
Dopasowanie znaczników 112
Transformacja zwyk ego tekstu za pomoc narz dzia sed 113
Dodawanie znaczników 117
Transformacja zwyk ego tekstu za pomoc j zyka Perl 119
Czego dowiedzia e si z rozdzia u 9.? 125
Informacje techniczne 125
10. To ju koniec ................................................................................ 127
Dalsza nauka 129
Wa ne narz dzia, implementacje i biblioteki 129
Dopasowanie numeru telefonu
w formacie stosowanym w Ameryce Pó nocnej 132
Dopasowanie adresu e-mail 133
Czego dowiedzia e si z rozdzia u 10.? 134
A Odniesienia do wyra e regularnych ......................................... 135
B S ownik wyra e regularnych .................................................... 153
Skorowidz ............................................................................................... 163
Spis tre ci 5
Kup książkę Poleć książkę
6 Spis tre ci
Kup książkę Poleć książkę
ROZDZIA 4.
Alternatywy, grupy i odniesienia
Mia e ju okazj zobaczy grupy w dzia aniu. Tekst grupy znajduje si
w nawiasie, a sama grupa ma za zadanie pomóc w wykonywaniu pewnych
operacji, na przyk ad w:
obs udze alternatywy, czyli wyborze mi dzy co najmniej dwoma opcjo-
nalnymi wzorcami;
tworzeniu podwzorców;
przechwytywaniu grupy w celu pó niejszego odniesienia si do niej
za pomoc odwo ania wstecznego;
zastosowaniu pewnej operacji do zgrupowanego wzorca, przyk adowo
kwantyfikatora;
u ywaniu grup nieprzechwytuj cych;
u ywaniu grup niepodzielnych (temat zaawansowany).
Oprócz tekstu The Rime of the Ancyent Mariner z pliku rime.txt w tym roz-
dziale zostanie przedstawionych tak e kilka innych przyk adów. B d
u ywa biurowej wersji aplikacji RegExr oraz innych narz dzi, na przy-
k ad sed. Biurow wersj aplikacji RegExr dla systemów Windows, Mac
i Linux mo esz pobra z strony http://www.gskinner.com/RegExr/desktop/
(aplikacja zosta a utworzona w technologii Adobe AIR). Wi cej informacji
znajdziesz na wskazanej stronie.
61
Kup książkę Poleć książkę
Alternatywy
Ujmuj c rzecz najpro ciej, alternatywa pozwala na wybór wzorców do do-
pasowania. Przyjmujemy za o enie, e chcesz si dowiedzie , ile razy s owo
the wyst puje w utworze The Rime of the Ancyent Mariner. Problem polega
na tym, e to s owo jest w utworze pisane w postaci THE, The i the. Rozwi -
zaniem problemu jest wówczas u ycie alternatywy.
Uruchom biurow wersj aplikacji RegExr, dwukrotnie klikaj c jej ikon . Apli-
kacja wygl da niemal tak samo jak wersja sieciowa, ale ma t zalet , e dzia a na
komputerze lokalnym niezale nie od ewentualnych problemów zwi zanych
z sieci , które czasem pojawiaj si podczas u ywania aplikacji sieciowych.
Na potrzeby omawianego wiczenia skopiowa em ca y utwór z pliku rime.txt,
a nast pnie wklei em go w aplikacji RegExr. U ywana przeze mnie wersja
systemu to Mac OS X 10.7 (Lion).
W górnym polu tekstowym aplikacji wprowad wyra enie regularne:
(the|The|THE)
które spowoduje pod wietlenie w dolnym polu tekstowym wszystkich wyst -
pie s owa the w utworze (zobacz rysunek 4.1). Aby zobaczy kolejne pod wie-
tlone wyst pienia s owa the w tek cie docelowym, u yj przycisków przewijania.
Rysunek 4.1. U ycie alternatywy w biurowej wersji aplikacji RegExr
62 Rozdzia 4. Alternatywy, grupy i odniesienia
Kup książkę Poleć książkę
Istnieje mo liwo skrócenia przedstawionej grupy poprzez zastosowanie
opcji. Opcje pozwalaj na okre lenie, jak ma by przeprowadzone wyszu-
kiwanie wzorca. Przyk adowo opcja:
(?i)
powoduje, e wzorzec nie rozró nia wielko ci liter. Dlatego te zamiast
pierwotnego wzorca alternatywy mo emy u y poni szego:
(?i)the
Wypróbuj to wyra enie regularne w aplikacji RegExr i przekonaj si , jaki
b dzie wynik jego dzia ania. Ignorowanie wielko ci liter mo na w czy
tak e poprzez zaznaczenie pola wyboru ignoreCase w aplikacji RegExr.
Oba wymienione sposoby daj taki sam wynik. Przedstawion opcj oraz
kilka innych wymieniono w tabeli 4.1.
Tabela 4.1. Opcje wyra e regularnych
Opcja Opis Obs ugiwana przez
(?d)
Wiersze w systemie Unix Java
(?i)
Wielko liter PCRE, Perl, Java
(?J)
Zezwolenie na duplikaty PCRE1
(?m)
Multiline PCRE, Perl, Java
(?s)
Pojedynczy wiersz (dotall) PCRE, Perl, Java
(?u)
Wielko liter w Unicode Java
(?U)
Domy lne dopasowanie leniwe PCRE
(?x)
Ignoruj znaki niewidoczne i komentarze PCRE, Perl, Java
(?-& )
W czenie lub wy czenie opcji PCRE
Teraz u yjemy alternatywy podczas pracy z narz dziem grep. Warto
w tym miejscu wspomnie , e opcje wymienione w tabeli 4.1 nie dzia aj
z narz dziem grep, wi c konieczne b dzie u ycie pierwotnego wzorca al-
ternatywy. Aby obliczy liczb wierszy, w których s owo the zapisane za
pomoc znaków o dowolnej wielko ci wyst puje przynajmniej jeden raz,
wydaj nast puj ce polecenie:
grep -Ec "(the|The|THE)" rime.txt
Otrzymane dane wyj ciowe s proste:
327
1
Zobacz sekcj  Named Subpatterns na stronie http://www.pcre.org/pcre.txt.
Alternatywy 63
Kup książkę Poleć książkę
Wynik nie mówi wszystkiego, ale o tym za chwil .
Oto dok adna analiza wydanego polecenia narz dzia grep:
opcja -E oznacza u ycie rozszerzonych wyra e regularnych (ERE) za-
miast zwyk ych (BRE), dzi ki czemu unikasz konieczno ci poprzedzania
uko nikami nawiasów i pionowych kresek, jak ma to miejsce w przy-
padku wyra e BRE, na przyk ad \(THE\|The\|the\);
opcja -c zwraca liczb dopasowanych wierszy (a nie dopasowanych
s ów);
w nawiasie znajduje si grupa alternatywy (the, The i THE);
pionowa kreska oddziela poszczególne mo liwo ci zapisu sprawdzane
od lewej do prawej strony.
Poni sze polecenie zwróci wszystkie wyst pienia wskazanego s owa, wiersz
po wierszu:
grep -Eo "(the|The|THE)" rime.txt | wc -l
Dane wyj ciowe wykonanego polecenia to:
412
A oto jego dok adne omówienie:
opcja -o oznacza wy wietlenie jedynie tej cz ci wiersza, która zosta a
dopasowana do wzorca  w omawianym przyk adzie dane nie b d
jednak wy wietlone na ekranie, poniewa s potokowane (|) do pole-
cenia wc;
w omawianym kontek cie pionowa kreska powoduje przekazanie da-
nych wyj ciowych narz dzia grep jako danych wej ciowych polecenia
wc  polecenie wc oblicza liczb s ów, natomiast jego opcja -l zlicza
liczb wierszy danych wej ciowych.
Sk d wzi a si tak du a ró nica: jedno polecenie zwraca 327 wyst pie ,
natomiast drugie 412? Odpowied jest prosta: poniewa opcja -c podaje
liczb dopasowanych wierszy, a przecie w wierszu mo e znajdowa si
wi cej ni tylko jedno wyst pienie szukanego s owa. Je eli u yjemy opcji -o
wraz z wc -l, wówczas ka de wyst pienie s owa w dowolnej formie (wiel-
ko znaków) zostanie umieszczone w oddzielnym wierszu i zliczone, co da
w efekcie liczb 412.
To samo zadanie, ale wykonane za pomoc j zyka Perl, wymaga u ycia
poni szego polecenia:
perl -ne 'print if /(the|The|THE)/' rime.txt
64 Rozdzia 4. Alternatywy, grupy i odniesienia
Kup książkę Poleć książkę
Jeszcze lepszym rozwi zaniem b dzie u ycie wspomnianej wcze niej opcji
(?i), ale bez alternatywy:
perl -ne 'print if /(?i)the/' rime.txt
Jednak najlepsze rozwi zanie polega na dodaniu modyfikatora i po ostat-
nim ograniczniku wzorca:
perl -ne 'print if /the/i' rime.txt
Po wykonaniu powy szych polece otrzymasz takie same dane wyj ciowe
jak wcze niej. Im prostsze podej cie, tym lepiej. List innych modyfikato-
rów (nazywanych tak e flagami) przedstawiono w tabeli 4.2. Porównaj te
opcje (podobne, ale stosuj ce inn sk adni ) wymienione w tabeli 4.1.
Tabela 4.2. Modyfikatory (flagi) w j zyku Perl2
Modyfikator Opis
a
Dopasowanie \d, \s, \w i POSIX jedynie w zakresie ASCII
c
Zachowaj bie ce po o enie, je li próba dopasowania zako czy si niepowodzeniem
d
U yj domy lnych, rodzimych regu u ywanego systemu
g
Dopasowanie globalne
i
Dopasowanie bez uwzgl dnienia wielko ci liter
l
U ycie regu ustawie regionalnych u ytkownika
m
Ci gi tekstowe obejmuj ce wiele wierszy
p
Zachowanie dopasowanego ci gu tekstowego
s
Traktowanie ci gów tekstowych jako pojedynczego wiersza
u
U ycie regu Unicode podczas dopasowania
x
Ignorowanie znaków niewidocznych i komentarzy
Podwzorce
Bardzo cz sto, odwo uj c si do podwzorców w wyra eniach regularnych,
odnosimy si do grupy lub grup wewn trz innych grup. Podwzorzec jest
wi c wzorcem w innym wzorcu. Cz sto zdarza si , e warunek zawarty
w podwzorcu jest mo liwy do spe nienia po dopasowaniu wcze niejszego
wzorca, ale to nie jest regu . Podwzorce mo na tworzy na wiele ró nych
sposobów. W tym podrozdziale skoncentrujemy si przede wszystkim na
podwzorcach definiowanych przez u ycie nawiasów.
2
Zobacz http://perldoc.perl.org/perlre.html#Modifiers.
Podwzorce 65
Kup książkę Poleć książkę
W pewnym sensie u yty we wcze niejszej cz ci rozdzia u wzorzec:
(the|The|THE)
ma trzy podwzorce: pierwszy to the, drugi to The, a trzeci to THE. W oma-
wianym przypadku dopasowanie na przyk ad drugiego podwzorca zu-
pe nie nie zale y od dopasowania pierwszego. (Jako pierwszy zostanie do-
pasowany wzorzec pierwszy z lewej strony).
Poni ej wida przyk ad podwzorców, których dopasowanie zale y od do-
pasowania wcze niejszego wzorca:
(t|T)h(e|eir)
To wyra enie regularne powoduje dopasowanie dos ownych znaków t
lub T, nast pnie h, a dalej litery e lub liter eir. Dlatego te mo e dopasowa
dowolne z poni szych s ów:
the
The
their
Their
W tym przypadku drugi podwzorzec (e|eir) jest zale ny od pierwszego (t|T).
Podwzorce nie wymagaj u ywania nawiasów. Poni ej przedstawiono de-
finicj podwzorców, do której utworzenia wykorzystano klasy znaków:
\b[tT]h[ceinry]*\b
Powy sze wyra enie regularne mo e dopasowa oprócz s ów the lub The
tak e thee, thy i thence. Dwa wyra enia granicy s owa (\b) powoduj , e b dzie
ono dopasowywa o ca e s owa, a nie litery znajduj ce si w innych s owach.
Oto dok adne omówienie przedstawionego wyra enia regularnego:
wyra enie \b powoduje dopasowanie granicy pocz tku s owa;
[tT] to klasa znaków powoduj ca dopasowanie ma ej litery t lub du ej
litery T  ten fragment wyra enia regularnego mo emy uzna za pod-
wzorzec;
nast pnie wzorzec dopasowuje (lub próbuje dopasowa ) ma liter h;
drugi i zarazem ostatni podwzorzec równie jest zdefiniowany w po-
staci klasy znaków [ceinry], po której znajduje si kwantyfikator *
okre laj cy dopasowanie zero lub wi cej razy;
na ko cu wyra enia regularnego mamy kolejne dopasowanie granicy
s owa \b.
66 Rozdzia 4. Alternatywy, grupy i odniesienia
Kup książkę Poleć książkę
Jednym z bardziej interesuj cych aspektów wyra e regularnych
jest to, e stosowana terminologia mo e by blisko zwi zana ze
znaczeniem danej operacji lub wr cz przeciwnie. Decyduj c si
na u ycie terminu podwzorzec oraz innych w niniejszej ksi ce,
przeanalizowa em wiele róde i spróbowa em je wszystkie
po czy . Na pewno znajd si Czytelnicy, którzy b d si upie-
ra , e klasa znaków nie jest podwzorcem. Uwa am, e skoro
klasy znaków mog dzia a tak jak podwzorce, to mog je wrzuci
do jednego worka.
Grupy przechwytywania
i odwo ania wsteczne
Kiedy wzorzec grupuje ca tre lub jej cz w nawiasach, wówczas
przechwytuje t tre i przechowuje j tymczasowo w pami ci. Nast pnie,
je li chcesz, mo esz ponownie wykorzysta t tre , u ywaj c odwo ania
wstecznego w postaci:
\1
lub:
$1
przy czym \1 lub $1 odwo uj si do pierwszej grupy przechwytywania, \2
lub $2  do drugiej itd. Narz dzie sed akceptuje jedynie posta \1, nato-
miast j zyk Perl dopuszcza obie.
Pocz tkowo narz dzie sed obs ugiwa o odwo ania wsteczne
w zakresie od \1 do \9, ale takie ograniczenie ju nie istnieje.
Odwo ania wsteczne ju widzia e w dzia aniu, ale przedstawi je raz jeszcze.
W omawianym przyk adzie wykorzystamy je do zmiany kolejno ci s ów
w wierszu utworu, za co przepraszam Samuela Taylora Coleridge a. W apli-
kacji RegExr kliknij kart Replace, a nast pnie w górnym polu tekstowym
wprowad wzorzec:
(It is) (an ancyent Marinere)
Przewijaj trzecie pole tekstowe zawieraj ce tekst docelowy, a zobaczysz
pod wietlony wiersz, a pó niej w drugim polu tekstowym wprowad takie
wyra enie:
$2 $1
Grupy przechwytywania i odwo ania wsteczne 67
Kup książkę Poleć książkę
W dolnym polu tekstowym zobaczysz, e s owa w pod wietlonym wierszu
zosta y zamienione miejscami (spójrz na rysunek 4.2).
an ancyent Marinere It is,
Rysunek 4.2. Odwo ania wsteczne za pomoc wyra e $1 i $2
Poni sze polecenie pozwala na wykonanie tego samego zadania, ale za
pomoc narz dzia sed:
sed -En 's/(It is) (an ancyent Marinere)/\2 \1/p' rime.txt
Otrzymane dane wyj ciowe polecenia s nast puj ce:
an ancyent Marinere It is,
Wynik operacji jest wi c dok adnie taki sam, jak uzyskany w aplikacji RegExr.
Poni ej przedstawiono dok adne omówienie dzia ania wywo ania narz dzia
sed. Dzi ki temu mo esz dobrze zrozumie , jak naprawd dzia a omawiane
polecenie.
opcja -E powoduje u ycie rozszerzonych wyra e regularnych (ERE),
co zwalnia Ci na przyk ad z konieczno ci poprzedzania nawiasów
uko nikami;
opcja -n zawiesza zachowanie domy lne polegaj ce na wy wietleniu
ka dego wiersza;
68 Rozdzia 4. Alternatywy, grupy i odniesienia
Kup książkę Poleć książkę
polecenie zast powania powoduje wyszukanie dopasowanego tekstu
It is an ancyent Marinere i przechwytuje go w dwóch grupach;
polecenie zast powania powoduje tak e zmian kolejno ci s ów w do-
pasowanym tek cie, u ywaj c do tego odwo a wstecznych: najpierw
\2, a pó niej \1;
opcja p na ko cu polecenia zast powania oznacza wy wietlenie zmo-
dyfikowanego wiersza.
Polecenie w j zyku Perl wykonuj ce takie samo zadanie ma posta :
perl -ne 'print if s/(It is) (an ancyent Marinere)/\2 \1/' rime.txt
Zwró uwag na u ycie sk adni w stylu \1. Oczywi cie masz równie
mo liwo u ycia sk adni $1:
perl -ne 'print if s/(It is) (an ancyent Marinere)/$2 $1/' rime.txt
Bardzo podoba mi si sposób, w jaki Perl pozwala na wy wietlenie wska-
zanego wiersza. Chcia bym jeszcze zwróci uwag na jedn rzecz w wy-
wietlonych danych wyj ciowych:
an ancyent Marinere It is,
Podczas transformacji zosta a zachowana wielko liter. Perl pozwala
rozwi za ten problem dzi ki u yciu \u i \l:
perl -ne 'print if s/(It is) (an ancyent Marinere)/\u$2 \l$1/' rime.txt
Teraz otrzymane dane wyj ciowe przedstawiaj si znacznie lepiej:
An ancyent Marinere it is,
Oto dok adne omówienie dzia ania wyra e \u i \l:
sk adnia \l nie dopasowuje adnego znaku, ale zmienia znajduj cy si
po niej znak na ma y;
sk adnia \u zmienia znajduj cy si po niej znak na wielki;
dyrektywa \U (nieu yta w przyk adzie) zmienia ca y ci g tekstowy
znajduj cy si po niej na zapisany wielkimi literami;
dyrektywa \L (nieu yta w przyk adzie) zmienia ca y ci g tekstowy
znajduj cy si po niej na zapisany ma ymi literami.
Wymienione dyrektywy dzia aj a do wyst pienia kolejnej (w przypadku
\l lub \E do ko ca ci gu tekstowego). Poeksperymentuj z nimi i przekonaj
si , jaki jest ich sposób dzia ania.
Grupy przechwytywania i odwo ania wsteczne 69
Kup książkę Poleć książkę
Nazwane grupy
Nazwane grupy to po prostu grupy przechwytywania wraz ze zdefinio-
wanymi nazwami. Dost p do takich grup odbywa si poprzez ich nazwy,
a nie liczby. Oto sposób u ycia nazwanych grup w j zyku Perl:
perl -ne 'print if s/(?It is) (?an ancyent Marinere)/\u$+{two}
\l$+{one}/' rime.txt
Powy sze polecenie dzia a nast puj co:
dodanie ? i ? w nawiasach powoduje zdefiniowanie nazw
dla danych grup, odpowiednio one i two;
$+{one} odwo uje si do grupy o nazwie one, natomiast $+{two}  do
grupy o nazwie two.
Nazwanych grup mo na równie u ywa wewn trz wzorca, w którym
zosta y nazwane. Poni ej wyja ni Ci, co to oznacza. Przyjmujemy za o e-
nie, e szukany jest ci g tekstowy sk adaj cy si z sze ciu zer:
000000
To naci gany przyk ad, ale ma za zadanie jedynie zademonstrowa spo-
sób dzia ania. Grup trzech zer w podanym wzorcu nazywamy z (mo na
u y dowolnej nazwy):
(?0{3})
Nast pnie tak nazwanej grupy mo na u y ponownie w taki sposób:
(?0{3})\k
taki:
(?0{3})\k'z'
lub taki:
(?0{3})\g{z}
Wypróbuj powy sze wyra enia regularne w aplikacji RegExr i przekonaj si ,
jaki jest wynik ich dzia ania. W tabeli 4.3 wymieniono wiele przyk adów
sk adni odwo ywania si do nazwanych grup.
Grupy nieprzechwytuj ce
Istniej równie tak zwane grupy nieprzechwytuj ce, to znaczy takie, które
nie przechowuj swojej zawarto ci w pami ci. Czasami takie rozwi zanie
b dzie zalet , zw aszcza je li nigdy nie masz zamiaru odwo a si do grupy.
70 Rozdzia 4. Alternatywy, grupy i odniesienia
Kup książkę Poleć książkę
Tabela 4.3. Sk adnia nazwanych grup
Sk adnia Opis
(?...)
Nazwana grupa
(?nazwa...)
Inna nazwana grupa
(?P...)
Nazwana grupa (w j zyku Python)
\k
Odniesienie poprzez nazw (w j zyku Perl)
\k'nazwa'
Odniesienie poprzez nazw (w j zyku Perl)
\g{nazwa}
Odniesienie poprzez nazw (w j zyku Perl)
\k{nazwa}
Odniesienie poprzez nazw (w j zykach .NET)
(?P=nazwa)
Odniesienie poprzez nazw (w j zyku Python)
Poniewa grupa nie przechowuje swojej tre ci, jej dzia anie mo e charak-
teryzowa si wi ksz wydajno ci . Jednak w przypadku tak prostych
przyk adów jak prezentowane w niniejszej ksi ce kwestie zwi zane
z wydajno ci nie wyst puj .
Pami tasz pierwsz grup przedstawion w tym rozdziale? Dla przypo-
mnienia:
(the|The|THE)
Poniewa nie ma potrzeby odwo ywania si do powy szej grupy, mo na j
zdefiniowa jako grup nieprzechwytuj c . Wymaga to wyra enia regu-
larnego w nast puj cej postaci:
(?:the|The|THE)
Opieraj c si na materiale przedstawionym na pocz tku rozdzia u, po-
wy sze wyra enie mo na uzupe ni o opcj powoduj c , e wzorzec nie
rozró nia wielko ci liter (chocia w przypadku tej grupy nie trzeba doda-
wa wymienionej opcji):
(?i)(?:the)
Inny sposób:
(?:(?i)the)
Najlepiej jednak u y poni szego zapisu:
(?i:the)
Litera i opcji mo e zosta umieszczona pomi dzy znakiem zapytania i dwu-
kropkiem.
Grupy nieprzechwytuj ce 71
Kup książkę Poleć książkę
Grupy niepodzielne
Inny rodzaj grupy nieprzechwytuj cej to tak zwana grupa niepodzielna.
Je eli korzystasz z silnika wyra e regularnych obs uguj cego sprawdza-
nie wsteczne (ang. backtracking), taka grupa spowoduje wy czenie spraw-
dzania wstecznego, ale nie w przypadku silnika wyra e regularnych, lecz
tylko w odniesieniu do cz ci wyra enia uj tej w grupie niepodzielnej.
Sk adnia przedstawia si tak:
(?>the)
Do czego mog s u y grupy niepodzielne? Jednym z czynników, który mo e
naprawd spowolni przetwarzanie wyra enia regularnego, jest w a nie
sprawdzanie wsteczne. Powód jest prosty: sprawdzenie wszystkich mo -
liwo ci wymaga czasu i zasobów komputera. Czasami przetworzenie wy-
ra enia regularnego mo e poch on naprawd ogromn ilo czasu. Kiedy
sytuacja staje si powa na, u ywane jest okre lenie katastrofalne spraw-
dzanie wsteczne.
Sprawdzanie wsteczne mo na wy czy , u ywaj c silnika wyra e regu-
larnych pozbawionego jego obs ugi, na przyk ad re2 (http://code.google.com/
p/re2/), lub wy czaj c sprawdzanie wsteczne dla fragmentów wyra enia
regularnego przez u ycie grup niepodzielnych.
W niniejszej ksi ce skoncentrowa em si na przedstawieniu
sk adni, dlatego niewiele miejsca po wi c na omówienie za-
gadnie optymalizacji prowadz cej do zwi kszenia wydajno ci
dzia ania wyra e regularnych. Z mojego punktu widzenia grupy
podzielne s stosowane przede wszystkim ze wzgl du na wy-
dajno .
Z rozdzia u 5. dowiesz si wi cej na temat klas znaków.
72 Rozdzia 4. Alternatywy, grupy i odniesienia
Kup książkę Poleć książkę
Czego dowiedzia e si z rozdzia u 4.?
Alternatywa pozwala na wybranie z dwóch lub wi kszej liczby wzorców.
Czym s modyfikatory oraz jak mo na ich u ywa we wzorcach?
Jakie s rodzaje podwzorców?
Jak u ywa grup przechwytywania oraz odwo a wstecznych?
Jak u ywa nazwanych grup oraz jak odwo ywa si do nich?
Jak u ywa grup nieprzechwytuj cych?
Co to s grupy niepodzielne?
Informacje techniczne
rodowisko Adobe AIR pozwala na skorzystanie z technologii HTML,
JavaScript, Flash i ActionScript do tworzenia aplikacji sieciowych
dzia aj cych jako samodzielne aplikacje po stronie klienta bez ko-
nieczno ci u ywania przegl darki internetowej do ich uruchamiania.
Wi cej informacji na temat Adobe AIR znajdziesz na stronie http://
www.adobe.com/pl/products/air.html.
Python (http://www.python.org/) to atwy do zrozumienia j zyk pro-
gramowania wysokiego poziomu. Python zawiera implementacj wy-
ra e regularnych (zobacz http://docs.python.org/2/library/re.html).
.NET (http://www.microsoft.com/net) to platforma programistyczna opra-
cowana dla Windowsa. Ona równie zawiera implementacj wyra e
regularnych (zobacz http://msdn.microsoft.com/en-us/library/hs600312.aspx).
Bardziej zaawansowane obja nienie tematu grup niepodzielnych znaj-
dziesz na stronach http://www.regular-expressions.info/atomic.html i http://
stackoverflow.com/questions/6488944/atomic-group-and-non-capturing-group.
Informacje techniczne 73
Kup książkę Poleć książkę
74 Rozdzia 4. Alternatywy, grupy i odniesienia
Kup książkę Poleć książkę
SKOROWIDZ
$1, 67 [[:word:]], 81
(?-& ), 63 [[:xdigit:]], 81
(?d), 63 [0-9], 17
(?i), 63 [\b], 34
(?J), 63 \0, 34, 92
(?m), 63 \1, 19, 67
(?s), 63 \a, 34
(?u), 63 \A, 52
(?U), 63 \cx, 34, 92
(?x), 63 \d, 13, 18, 34
*, znak, 20 \D, 18, 32, 34
.*, 99 \dxx, 34
., znak, 19 \E, 53
.NET, 73 \f, 36
?, znak, 20 \h, 36
[[:^alpha:]], 81 \H, 36
[[:^xxxx:]], 81 \l, 69
[[:alnum:]], 81 \L, 69
[[:alpha:]], 81 \n, 35, 36
[[:ascii:]], 81 \oxxx, 34
[[:blank:]], 81 \Q, 53
[[:ctrl:]], 81 \r, 35, 36
[[:digit:]], 81 \s, 35, 36
[[:graph:]], 81 \S, 36
[[:lower:]], 81 \t, 35, 36
[[:print:]], 81 \u, 69
[[:punct:]], 81 \U, 69
[[:space:]], 81 \uxxxx, 34
[[:upper:]], 81 \v, 36
163
Kup książkę Poleć książkę
\V, 36 e-mail, 133
\w, 32, 34 Esc, znak, 93
\W, 33, 34 inny ni cyfra, znak, 18, 32, 34
\x xx, 34 inny ni niewidoczny, znak, 36
\z, 52 inny ni spacja, znak, 36
\Z, 52 kontrolny, znak, 34, 92
+, znak, 20 leniwe, 154
liczba ósemkowa, 88
niepionowy tabulator, 36
A
niepoziomy znak niewidoczny, 36
nies owo, 33, 34
ack, narz dzie, 88, 89, 95
niewidoczny, znak, 35
Adobe AIR, 73
nowy wiersz, znak, 35, 36
alarm, 34
null, znak, 34, 92
alternatywy, 62, 153
numer telefonu, 132
ASCII, 83, 153
okre lon liczb razy, 100
tablica kodów, 147, 148, 149, 150,
pionowy tabulator, 36
151
pocz tek i koniec wiersza, 47, 48
AsciiDoc, 125
powrót na pocz tek wiersza,
asercja, 47, 153
znak, 35, 36
o zerowej d ugo ci, 47, 105, 153
poziomy tabulator, 36
atomy, Patrz metaznaki
poziomy znak niewidoczny, 36
s owo, 32, 34
B
spacja, 36
tabulator, 35
Backspace, dopasowanie, 34, 93
Unicode, 34, 84
Bell, dopasowanie, 92
warto dziesi tna znaku, 34
BRE, 51, 153, 157
warto ósemkowa znaku, 34
bufor roboczy, Patrz przestrze wzorca
warto szesnastkowa znaku, 34
wysuni cie strony, znak, 36
C
zaborcze, 154
zach anne, 154
code point, Patrz punkt kodowy
znaczniki, 112
composability, 26, 160
dos owny ci g tekstowy, 17, 29, 154
cyfry, dopasowanie, 17, 18, 30, 34
Cygwin, 10
E
D
echo, polecenie, 40
ed, edytor, 154
dopasowanie, 154
egrep, narz dzie, 155
alarm, 34
e-mail, dopasowanie, 133
Backspace, znak, 34, 93
ERE, 51, 154, 158
Bell, znak, 92
Esc, dopasowanie, 93
cyfry, 18, 34
164 Skorowidz
Kup książkę Poleć książkę
F L
fgrep, narz dzie, 155 Levithan, Steven, 27
flaga, Patrz modyfikator litera , 29, 156
fragment, 154 Lovitt, Michael, 82
G M
ga , 155 McMahon, Lee, 40
Git, 44 metaznaki, 17, 137, 156
GitHub, 44 modyfikatory, 146, 156
granice, Patrz kwantyfikatory
grep, narz dzie, 51, 59, 155
N
grupy, 155
niepodzielne, 72, 155
nazwane grupy, 70, 71
nieprzechwytuj ce, 70, 155
negacja, 157
przechwytywania, 19, 67, 155
negatywne przewidywanie wsteczne,
gwiazda Kleene'a, 99
109, 157
gwiazdka, znak, 20
niepionowy tabulator, dopasowanie,
36
niepoziomy znak niewidoczny,
H
dopasowanie, 36
HTML5, 44 nies owo
dopasowanie, 33, 34
granice, 49, 50
K
Notepad++, edytor, 24, 26
null, dopasowanie, 34, 92
katastrofalne sprawdzanie wsteczne,
numer telefonu, dopasowanie, 16, 17,
72, 156
18, 19, 20, 21, 22, 132
klasy znaków, 17, 75, 76, 77, 156
negacja, 77
POSIX, 80, 81, 145
O
Kleene, Stephen, 7
kotwice, 47, 52, 156 odwo ania wsteczne, 19, 67, 157
kropka, znak, 19, 37 ograniczone wyst pienia, Patrz
kwantyfikatory, 20, 97, 98, 156 kwantyfikatory
leniwe, 98, 101, 102 Oniguruma, 131
podstawowe, 100 opcje, 146, 157
zaborcze, 98, 103, 104 Opera Next, 82
zach anne, 98 Oxygen, edytor, 24, 26
Skorowidz 165
Kup książkę Poleć książkę
RegExr, 27, 28, 44
P
dodawanie znaczników, 54, 55
Reggy, aplikacja, 78, 82
PCRE, 59, 130
rozszerzone wyra enia regularne,
pcregrep, 52, 130
Patrz ERE
Perl, 42, 43, 45, 130, 157
Rubular, aplikacja, 80, 82
dodawanie znaczników, 57, 119
Ruby, 131
modyfikatory, 65, 146
obs uga liczb rzymskich, 122
obs uga wierszy, 122
S
plik polece , 123
perldoc, 126
sed, narz dzie, 40, 44, 159
pionowy tabulator, dopasowanie, 36
dodawanie znaczników, 55, 56,
plus, znak, 20
113
podstawowe wyra enia regularne,
obs uga liczb rzymskich, 115
Patrz BRE
obs uga wierszy, 116
podwzorzec, 65, 66
plik polece , 118
POSIX, 80, 82, 157
zast powanie znaków, 114
klasy znaków, 145
Skinner, Grant, 27
poziomy tabulator, dopasowanie, 36
s owo
poziomy znak niewidoczny,
dopasowanie, 32, 34
dopasowanie, 36
granice, 49, 50
pozytywne przewidywanie wsteczne,
spacja, dopasowanie, 36
109, 157
sprawdzanie wsteczne, 98, 159
przestrze wzorca, 158
system szesnastkowy, 159
przewidywania, 105, 158
negatywne, 108
T
pozytywne, 105
wstecz, 158
tabulator, dopasowanie, 35
punkt kodowy, 14, 158
TextMate, edytor, 23, 26
Python, 73, 131
Thomson, Ken, 7, 13, 59, 154, 155
Q
U
QED, edytor, 7, 13, 135
Unicode, 83, 159
wyra enia regularne, 136
dla znaków niewidocznych, 139,
140
dopasowanie, 34, 84
R
w a ciwo ci znaku, 88, 90, 91
Rackham, Stuart, 125
utrzymywana przestrze , 160
RE2, 132
utrzymywany bufor, Patrz
Regex Hero, aplikacja, 85, 94
utrzymywana przestrze
RegexPal, 14, 15, 26
166 Skorowidz
Kup książkę Poleć książkę
znak inny ni cyfra, dopasowanie, 18,
V
32, 34
znak inny ni spacja, dopasowanie,
vi, edytor, 51, 59, 160
36
vim, edytor, 51, 59, 94, 160
znak kontrolny, dopasowanie, 34, 92,
dopasowanie znaku Unicode, 87
140, 141
znak niewidoczny, dopasowanie, 35,
W
139, 140
znak nowego wiersza, dopasowanie,
Wall, Larry, 42
35, 36
warto dziesi tna znaku,
znak ósemkowy, 161
dopasowanie, 34
znak powrotu na pocz tek wiersza,
warto ósemkowa znaku,
dopasowanie, 35, 36
dopasowanie, 34
znak steruj cy, 18, 161
warto szesnastkowa znaku,
znak wysuni cia strony,
dopasowanie, 34
dopasowanie, 36
wiersz, pocz tek i koniec, 47, 48
znak zapytania, 20
w a ciwo ci znaku, 142, 143
znaki skrótów, 14, 18, 138
wyra enia regularne, 7, 13, 161
dla znaków niewidocznych, 36,
opcje, 63
139
wyra enia w nawiasach,
lista, 34
Patrz klasy znaków
wzorce, 27
Z
zakres, 31
sk adnia, 101
zestaw znaków, 17, 77, 161
znaczniki, dopasowanie, 112
Skorowidz 167
Kup książkę Poleć książkę
O autorze
Michael Fitzgerald to programista i konsultant, napisa 10 ksi ek technicz-
nych dla wydawnictw O Reilly oraz John Wiley & Sons, jak równie kilka ar-
tyku ów dla serwisu O Reilly Network. By tak e cz onkiem komisji, która
opracowa a RELAX NG, czyli j zyk schematów do j zyka XML.
Kolofon
Zwierz na ok adce ksi ki Wyra enia regularne. Wprowadzenie to nietoperz
owocowy.
Nietoperz owocowy nale y do podrz du nietoperzy owoco ernych (Megachi-
roptera) i rodziny rudawkowatych (Pteropodidae), bywa równie nazywany la-
taj cym lisem lub lataj cym psem. Pomimo swojej nazwy poszczególne osob-
niki wchodz ce w sk ad ca ej rodziny rudawkowatych mog znacznie ró ni si
rozmiarem cia a  najmniejszy przedstawiciel mierzy zaledwie sze centy-
metrów, podczas gdy inny osobnik mo e wa y oko o kilograma, a rozpi to
skrzyde mo e wynosi nawet oko o pó tora metra.
Jednak zgodnie ze swoj nazw nietoperze owocowe, tak jak i inne nietoperze
owoco erne, od ywiaj si albo owocami, albo nektarem kwiatowym. Niektóre
przegryzaj z bami skórk owocow , aby nast pnie wyjada mi sz owocowy
ze rodka, podczas gdy inne zlizuj sok z uszkodzonego owocu. Ze wzgl du
na fakt, e nietoperze owocowe od ywiaj si nektarem, odgrywaj donios
rol w rozmna aniu ro lin, poniewa wietnie przenosz py ki i nasiona. Orga-
nizacja World Bat Sanctuary ( wiatowe Sanktuarium Nietoperzy) szacuje, e
oko o 95% wszystkich nowo powsta ych lasów deszczowych wyros o dzi ki
aktywno ci w a nie nietoperzy owocowych. Ta zale no mi dzy nietoperza-
mi i ro linami jest form mutualizmu  interakcji biologicznej organizmów
nale cych do ró nych gatunków, prowadz cej do obopólnych korzy ci  zwan
w tym wypadku chiropterologi .
Nietoperze owoco erne wyst puj praktycznie na ca ym wiecie, jednak e ich
ulubionym miejscem ycia s ciep e, tropikalne klimaty, bogate w owoce i kwiaty.
Chocia wietnie opanowa y umiej tno latania, znane s ze swego niezdarnego
l dowania  cz sto l duj , rozbijaj c si na drzewach, a gdy staraj si zatrzyma ,
próbuj chwyci ko czyny stopami. Takie zachowanie utrwala b dne przekonanie,
e s lepe. W rzeczywisto ci maj jednak najlepszy wzrok spo ród wszystkich
nietoperzy, które musz polega jedynie na zmy le echolokacji. Nietoperze owoco-
erne do zlokalizowania po ywienia i nawigacji u ywaj wzroku oraz w chu.
Obrazek na ok adce ksi ki pochodzi z Cassell s Natural History.
Kup książkę Poleć książkę


Wyszukiwarka

Podobne podstrony:
205 Wyrażenia regularne
OI Wyrazenia regularne latex
Wyrazenia regularne Leksykon kieszonkowy Wydanie II wyrlk2
Wyrazenia regularne Leksykon kieszonkowy Wydanie II wyrlk2
Wyrażenia regularne Leksykon kieszonkowy
WYKŁAD 1 Wprowadzenie do biotechnologii farmaceutycznej
wprowadz w11
Układ Regulacji Kaskadowej 2
Medycyna manualna Wprowadzenie do teorii, rozpoznawanie i leczenie
00 Spis treści, Wstęp, Wprowadzenie

więcej podobnych podstron