Wyrazenia regularne Wprowadzenie

background image
background image

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ądź
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ę

Poleć książkę

Oceń książkę

Księgarnia internetowa

Lubię to! » Nasza społeczność

background image

3

SPIS TRECI

Wprowadzenie ........................................................................................... 7

1. Czym s wyraenia 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

Uywanie znaków skrótów

18

Dopasowanie dowolnego znaku

19

Grupy przechwytywania i odwoania wsteczne

19

Uywanie kwantyfikatorów

20

Uywanie dosownych znaków

21

Przykady aplikacji

23

Czego dowiedziae si z rozdziau 1.?

25

Informacje techniczne

26

2. Proste dopasowanie wzorca ......................................................... 27

Dopasowanie dosownego cigu tekstowego

29

Dopasowanie cyfr

30

Dopasowanie znaków innych ni cyfry

32

Dopasowanie sów i znaków niebdcych sowami

32

Dopasowanie znaku niewidocznego

35

Dopasowanie dowolnego znaku, po raz kolejny

37

Poleć książkę

Kup książkę

background image

4

_ Spis

treci

Oznaczanie tekstu

39

Czego dowiedziae si z rozdziau 2.?

43

Informacje techniczne

44

3. Granice

...........................................................................................47

Pocztek i koniec wiersza

47

Granice sowa i niesowa

49

Inne kotwice

52

Okrelenie grupy znaków jako dosownych

53

Dodawanie znaczników

54

Czego dowiedziae si z rozdziau 3.?

58

Informacje techniczne

59

4. Alternatywy,

grupy

i

odniesienia

................................................. 61

Alternatywy 62
Podwzorce 65
Grupy przechwytywania i odwoania wsteczne

67

Grupy nieprzechwytujce

70

Czego dowiedziae si z rozdziau 4.?

73

Informacje techniczne

73

5. Klasy

znaków

................................................................................. 75

Negacja klasy znaków

77

Zczenia i rónice

77

Klasy znaków POSIX

80

Czego dowiedziae si z rozdziau 5.?

82

Informacje techniczne

82

6. Dopasowanie

Unicode

i innych znaków .......................................83

Dopasowanie znaku Unicode

84

Dopasowanie znaków liczb ósemkowych

88

Dopasowanie waciwoci znaku Unicode

88

Dopasowanie znaków kontrolnych

92

Czego dowiedziae si z rozdziau 6.?

94

Informacje techniczne

94

Poleć książkę

Kup książkę

background image

Spis

treci

_

5

7. Kwantyfikatory

.............................................................................. 97

Zachanne, leniwe i zaborcze

98

Dopasowanie za pomoc *, + oraz ?

99

Dopasowanie okrelon liczb razy

100

Kwantyfikatory leniwe

101

Kwantyfikatory zaborcze

103

Czego dowiedziae si z rozdziau 7.?

104

Informacje techniczne

104

8. Przewidywania

............................................................................ 105

Przewidywanie pozytywne

105

Przewidywania negatywne

108

Pozytywne przewidywanie wsteczne

109

Negatywne przewidywanie wsteczne

109

Czego dowiedziae si z rozdziau 8.?

110

Informacje techniczne

110

9. Dodawanie znaczników HTML5 do dokumentu ......................... 111

Dopasowanie znaczników

112

Transformacja zwykego tekstu za pomoc narzdzia sed

113

Dodawanie znaczników

117

Transformacja zwykego tekstu za pomoc jzyka Perl

119

Czego dowiedziae si z rozdziau 9.?

125

Informacje techniczne

125

10. To

ju

koniec ................................................................................ 127

Dalsza nauka

129

Wane narzdzia, implementacje i biblioteki

129

Dopasowanie numeru telefonu

w formacie stosowanym w Ameryce Pónocnej

132

Dopasowanie adresu e-mail

133

Czego dowiedziae si z rozdziau 10.?

134

A Odniesienia do wyrae regularnych ......................................... 135

B Sownik wyrae regularnych .................................................... 153

Skorowidz ............................................................................................... 163

Poleć książkę

Kup książkę

background image

6

_ Spis

treci

Poleć książkę

Kup książkę

background image

61

ROZDZIA 4.

Alternatywy, grupy i odniesienia

Miae ju okazj zobaczy grupy w dziaaniu. Tekst grupy znajduje si
w nawiasie, a sama grupa ma za zadanie pomóc w wykonywaniu pewnych
operacji, na przykad w:

x

obsudze alternatywy, czyli wyborze midzy co najmniej dwoma opcjo-
nalnymi wzorcami;

x

tworzeniu podwzorców;

x

przechwytywaniu grupy w celu póniejszego odniesienia si do niej
za pomoc odwoania wstecznego;

x

zastosowaniu pewnej operacji do zgrupowanego wzorca, przykadowo
kwantyfikatora;

x

uywaniu grup nieprzechwytujcych;

x

uywaniu grup niepodzielnych (temat zaawansowany).

Oprócz tekstu The Rime of the Ancyent Mariner z pliku rime.txt w tym roz-
dziale zostanie przedstawionych take kilka innych przykadów. Bd
uywa biurowej wersji aplikacji RegExr oraz innych narzdzi, na przy-
kad

sed

. Biurow wersj aplikacji RegExr dla systemów Windows, Mac

i Linux moesz pobra z strony http://www.gskinner.com/RegExr/desktop/
(aplikacja zostaa utworzona w technologii Adobe AIR). Wicej informacji
znajdziesz na wskazanej stronie.

Poleć książkę

Kup książkę

background image

62

_

Rozdzia 4. Alternatywy, grupy i odniesienia

Alternatywy

Ujmujc rzecz najprociej, alternatywa pozwala na wybór wzorców do do-
pasowania. Przyjmujemy zaoenie, e chcesz si dowiedzie, ile razy sowo
the wystpuje w utworze The Rime of the Ancyent Mariner. Problem polega
na tym, e to sowo jest w utworze pisane w postaci THE, The i the. Rozwi-
zaniem problemu jest wówczas uycie alternatywy.

Uruchom biurow wersj aplikacji RegExr, dwukrotnie klikajc jej ikon. Apli-
kacja wyglda niemal tak samo jak wersja sieciowa, ale ma t zalet, e dziaa na
komputerze lokalnym niezalenie od ewentualnych problemów zwizanych
z sieci, które czasem pojawiaj si podczas uywania aplikacji sieciowych.

Na potrzeby omawianego wiczenia skopiowaem cay utwór z pliku rime.txt,
a nastpnie wkleiem go w aplikacji RegExr. Uywana przeze mnie wersja
systemu to Mac OS X 10.7 (Lion).

W górnym polu tekstowym aplikacji wprowad wyraenie regularne:

(the|The|THE)

które spowoduje podwietlenie w dolnym polu tekstowym wszystkich wyst-
pie sowa the w utworze (zobacz rysunek 4.1). Aby zobaczy kolejne podwie-
tlone wystpienia sowa the w tekcie docelowym, uyj przycisków przewijania.

Rysunek 4.1. Uycie alternatywy w biurowej wersji aplikacji RegExr

Poleć książkę

Kup książkę

background image

Alternatywy

_

63

Istnieje moliwo skrócenia przedstawionej grupy poprzez zastosowanie
opcji. Opcje pozwalaj na okrelenie, jak ma by przeprowadzone wyszu-
kiwanie wzorca. Przykadowo opcja:

(?i)

powoduje, e wzorzec nie rozrónia wielkoci liter. Dlatego te zamiast
pierwotnego wzorca alternatywy moemy uy poniszego:

(?i)the

Wypróbuj to wyraenie regularne w aplikacji RegExr i przekonaj si, jaki
bdzie wynik jego dziaania. Ignorowanie wielkoci liter mona wczy
take 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 wyrae regularnych

Opcja

Opis

Obsugiwana przez

(?d)

Wiersze w systemie Unix

Java

(?i)

Wielko liter

PCRE, Perl, Java

(?J)

Zezwolenie na duplikaty

PCRE

1

(?m)

Multiline

PCRE, Perl, Java

(?s)

Pojedynczy wiersz (dotall)

PCRE, Perl, Java

(?u)

Wielko liter w Unicode

Java

(?U)

Domylne dopasowanie leniwe

PCRE

(?x)

Ignoruj znaki niewidoczne i komentarze

PCRE, Perl, Java

(?-…)

Wczenie lub wyczenie opcji

PCRE

Teraz uyjemy alternatywy podczas pracy z narzdziem

grep

. Warto

w tym miejscu wspomnie, e opcje wymienione w tabeli 4.1 nie dziaaj
z narzdziem

grep

, wic konieczne bdzie uycie pierwotnego wzorca al-

ternatywy. Aby obliczy liczb wierszy, w których sowo the zapisane za
pomoc znaków o dowolnej wielkoci wystpuje przynajmniej jeden raz,
wydaj nastpujce polecenie:

grep -Ec "(the|The|THE)" rime.txt

Otrzymane dane wyjciowe s proste:

327

1

Zobacz sekcj „Named Subpatterns” na stronie http://www.pcre.org/pcre.txt.

Poleć książkę

Kup książkę

background image

64

_

Rozdzia 4. Alternatywy, grupy i odniesienia

Wynik nie mówi wszystkiego, ale o tym za chwil.

Oto dokadna analiza wydanego polecenia narzdzia

grep

:

x

opcja

-E

oznacza uycie rozszerzonych wyrae regularnych (ERE) za-

miast zwykych (BRE), dziki czemu unikasz koniecznoci poprzedzania
ukonikami nawiasów i pionowych kresek, jak ma to miejsce w przy-
padku wyrae BRE, na przykad

\(THE\|The\|the\)

;

x

opcja

-c

zwraca liczb dopasowanych wierszy (a nie dopasowanych

sów);

x

w nawiasie znajduje si grupa alternatywy (the, The i THE);

x

pionowa kreska oddziela poszczególne moliwoci zapisu sprawdzane
od lewej do prawej strony.

Ponisze polecenie zwróci wszystkie wystpienia wskazanego sowa, wiersz
po wierszu:

grep -Eo "(the|The|THE)" rime.txt | wc -l

Dane wyjciowe wykonanego polecenia to:

412

A oto jego dokadne omówienie:

x

opcja

-o

oznacza wywietlenie jedynie tej czci wiersza, która zostaa

dopasowana do wzorca — w omawianym przykadzie dane nie bd
jednak wywietlone na ekranie, poniewa s potokowane (

|

) do pole-

cenia

wc

;

x

w omawianym kontekcie pionowa kreska powoduje przekazanie da-
nych wyjciowych narzdzia

grep

jako danych wejciowych polecenia

wc

— polecenie

wc

oblicza liczb sów, natomiast jego opcja

-l

zlicza

liczb wierszy danych wejciowych.

Skd wzia si tak dua rónica: jedno polecenie zwraca 327 wystpie,
natomiast drugie 412? Odpowied jest prosta: poniewa opcja

-c

podaje

liczb dopasowanych wierszy, a przecie w wierszu moe znajdowa si
wicej ni tylko jedno wystpienie szukanego sowa. Jeeli uyjemy opcji

-o

wraz z

wc -l

, wówczas kade wystpienie sowa 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 jzyka Perl, wymaga uycia
poniszego polecenia:

perl -ne 'print if /(the|The|THE)/' rime.txt

Poleć książkę

Kup książkę

background image

Podwzorce

_

65

Jeszcze lepszym rozwizaniem bdzie uycie wspomnianej wczeniej opcji
(

?i

), ale bez alternatywy:

perl -ne 'print if /(?i)the/' rime.txt

Jednak najlepsze rozwizanie polega na dodaniu modyfikatora

i

po ostat-

nim ograniczniku wzorca:

perl -ne 'print if /the/i' rime.txt

Po wykonaniu powyszych polece otrzymasz takie same dane wyjciowe
jak wczeniej. Im prostsze podejcie, tym lepiej. List innych modyfikato-
rów (nazywanych take flagami) przedstawiono w tabeli 4.2. Porównaj te
opcje (podobne, ale stosujce inn skadni) wymienione w tabeli 4.1.

Tabela 4.2. Modyfikatory (flagi) w jzyku Perl

2

Modyfikator

Opis

a

Dopasowanie \d, \s, \w i POSIX jedynie w zakresie ASCII

c

Zachowaj biece pooenie, jeli próba dopasowania zakoczy si niepowodzeniem

d

Uyj domylnych, rodzimych regu uywanego systemu

g

Dopasowanie globalne

i

Dopasowanie bez uwzgldnienia wielkoci liter

l

Uycie regu ustawie regionalnych uytkownika

m

Cigi tekstowe obejmujce wiele wierszy

p

Zachowanie dopasowanego cigu tekstowego

s

Traktowanie cigów tekstowych jako pojedynczego wiersza

u

Uycie regu Unicode podczas dopasowania

x

Ignorowanie znaków niewidocznych i komentarzy

Podwzorce

Bardzo czsto, odwoujc si do podwzorców w wyraeniach regularnych,
odnosimy si do grupy lub grup wewntrz innych grup. Podwzorzec jest
wic wzorcem w innym wzorcu. Czsto zdarza si, e warunek zawarty
w podwzorcu jest moliwy do spenienia po dopasowaniu wczeniejszego
wzorca, ale to nie jest regu. Podwzorce mona tworzy na wiele rónych
sposobów. W tym podrozdziale skoncentrujemy si przede wszystkim na
podwzorcach definiowanych przez uycie nawiasów.

2

Zobacz http://perldoc.perl.org/perlre.html#Modifiers.

Poleć książkę

Kup książkę

background image

66

_

Rozdzia 4. Alternatywy, grupy i odniesienia

W pewnym sensie uyty we wczeniejszej czci rozdziau wzorzec:

(the|The|THE)

ma trzy podwzorce: pierwszy to the, drugi to The, a trzeci to THE. W oma-
wianym przypadku dopasowanie na przykad drugiego podwzorca zu-
penie nie zaley od dopasowania pierwszego. (Jako pierwszy zostanie do-
pasowany wzorzec pierwszy z lewej strony).

Poniej wida przykad podwzorców, których dopasowanie zaley od do-
pasowania wczeniejszego wzorca:

(t|T)h(e|eir)

To wyraenie regularne powoduje dopasowanie dosownych znaków t
lub T, nastpnie h, a dalej litery e lub liter eir. Dlatego te moe dopasowa
dowolne z poniszych sów:

x

the

x

The

x

their

x

Their

W tym przypadku drugi podwzorzec

(e|eir)

jest zaleny od pierwszego

(t|T)

.

Podwzorce nie wymagaj uywania nawiasów. Poniej przedstawiono de-
finicj podwzorców, do której utworzenia wykorzystano klasy znaków:

\b[tT]h[ceinry]*\b

Powysze wyraenie regularne moe dopasowa oprócz sów the lub The
take thee, thy i thence. Dwa wyraenia granicy sowa (

\b

) powoduj, e bdzie

ono dopasowywao cae sowa, a nie litery znajdujce si w innych sowach.

Oto dokadne omówienie przedstawionego wyraenia regularnego:

x

wyraenie

\b

powoduje dopasowanie granicy pocztku sowa;

x

[tT]

to klasa znaków powodujca dopasowanie maej litery t lub duej

litery T — ten fragment wyraenia regularnego moemy uzna za pod-
wzorzec;

x

nastpnie wzorzec dopasowuje (lub próbuje dopasowa) ma liter h;

x

drugi i zarazem ostatni podwzorzec równie jest zdefiniowany w po-
staci klasy znaków

[ceinry]

, po której znajduje si kwantyfikator

*

okrelajcy dopasowanie zero lub wicej razy;

x

na kocu wyraenia regularnego mamy kolejne dopasowanie granicy
sowa

\b

.

Poleć książkę

Kup książkę

background image

Grupy przechwytywania i odwoania wsteczne

_

67

Jednym z bardziej interesujcych aspektów wyrae regularnych
jest to, e stosowana terminologia moe by blisko zwizana ze
znaczeniem danej operacji lub wrcz przeciwnie. Decydujc si
na uycie terminu podwzorzec oraz innych w niniejszej ksice,
przeanalizowaem wiele róde i spróbowaem je wszystkie
poczy. Na pewno znajd si Czytelnicy, którzy bd si upie-
ra, e klasa znaków nie jest podwzorcem. Uwaam, e skoro
klasy znaków mog dziaa tak jak podwzorce, to mog je wrzuci
do jednego worka.

Grupy przechwytywania
i odwoania wsteczne

Kiedy wzorzec grupuje ca tre lub jej cz w nawiasach, wówczas
przechwytuje t tre i przechowuje j tymczasowo w pamici. Nastpnie,
jeli chcesz, moesz ponownie wykorzysta t tre, uywajc odwoania
wstecznego w postaci:

\1

lub:

$1

przy czym

\1

lub

$1

odwouj si do pierwszej grupy przechwytywania,

\2

lub

$2

— do drugiej itd. Narzdzie

sed

akceptuje jedynie posta

\1

, nato-

miast jzyk Perl dopuszcza obie.

Pocztkowo narzdzie

sed

obsugiwao odwoania wsteczne

w zakresie od

\1

do

\9

, ale takie ograniczenie ju nie istnieje.

Odwoania wsteczne ju widziae w dziaaniu, ale przedstawi je raz jeszcze.
W omawianym przykadzie wykorzystamy je do zmiany kolejnoci sów
w wierszu utworu, za co przepraszam Samuela Taylora Coleridge’a. W apli-
kacji RegExr kliknij kart Replace, a nastpnie w górnym polu tekstowym
wprowad wzorzec:

(It is) (an ancyent Marinere)

Przewijaj trzecie pole tekstowe zawierajce tekst docelowy, a zobaczysz
podwietlony wiersz, a póniej w drugim polu tekstowym wprowad takie
wyraenie:

$2 $1

Poleć książkę

Kup książkę

background image

68

_

Rozdzia 4. Alternatywy, grupy i odniesienia

W dolnym polu tekstowym zobaczysz, e sowa w podwietlonym wierszu
zostay zamienione miejscami (spójrz na rysunek 4.2).

an ancyent Marinere It is,

Rysunek 4.2. Odwoania wsteczne za pomoc wyrae $1 i $2

Ponisze polecenie pozwala na wykonanie tego samego zadania, ale za
pomoc narzdzia

sed

:

sed -En 's/(It is) (an ancyent Marinere)/\2 \1/p' rime.txt

Otrzymane dane wyjciowe polecenia s nastpujce:

an ancyent Marinere It is,

Wynik operacji jest wic dokadnie taki sam, jak uzyskany w aplikacji RegExr.
Poniej przedstawiono dokadne omówienie dziaania wywoania narzdzia

sed

. Dziki temu moesz dobrze zrozumie, jak naprawd dziaa omawiane

polecenie.

x

opcja

-E

powoduje uycie rozszerzonych wyrae regularnych (ERE),

co zwalnia Ci na przykad z koniecznoci poprzedzania nawiasów
ukonikami;

x

opcja

-n

zawiesza zachowanie domylne polegajce na wywietleniu

kadego wiersza;

Poleć książkę

Kup książkę

background image

Grupy przechwytywania i odwoania wsteczne

_

69

x

polecenie zastpowania powoduje wyszukanie dopasowanego tekstu
It is an ancyent Marinere i przechwytuje go w dwóch grupach;

x

polecenie zastpowania powoduje take zmian kolejnoci sów w do-
pasowanym tekcie, uywajc do tego odwoa wstecznych: najpierw

\2

, a póniej

\1

;

x

opcja

p

na kocu polecenia zastpowania oznacza wywietlenie zmo-

dyfikowanego wiersza.

Polecenie w jzyku Perl wykonujce takie samo zadanie ma posta:

perl -ne 'print if s/(It is) (an ancyent Marinere)/\2 \1/' rime.txt

Zwró uwag na uycie skadni w stylu

\1

. Oczywicie masz równie

moliwo uycia skadni

$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 wywietlenie wska-
zanego wiersza. Chciabym jeszcze zwróci uwag na jedn rzecz w wy-
wietlonych danych wyjciowych:

an ancyent Marinere It is,

Podczas transformacji zostaa zachowana wielko liter. Perl pozwala
rozwiza ten problem dziki uyciu

\u

i

\l

:

perl -ne 'print if s/(It is) (an ancyent Marinere)/\u$2 \l$1/' rime.txt

Teraz otrzymane dane wyjciowe przedstawiaj si znacznie lepiej:

An ancyent Marinere it is,

Oto dokadne omówienie dziaania wyrae

\u

i

\l

:

x

skadnia

\l

nie dopasowuje adnego znaku, ale zmienia znajdujcy si

po niej znak na may;

x

skadnia

\u

zmienia znajdujcy si po niej znak na wielki;

x

dyrektywa

\U

(nieuyta w przykadzie) zmienia cay cig tekstowy

znajdujcy si po niej na zapisany wielkimi literami;

x

dyrektywa

\L

(nieuyta w przykadzie) zmienia cay cig tekstowy

znajdujcy si po niej na zapisany maymi literami.

Wymienione dyrektywy dziaaj a do wystpienia kolejnej (w przypadku

\l

lub

\E

do koca cigu tekstowego). Poeksperymentuj z nimi i przekonaj

si, jaki jest ich sposób dziaania.

Poleć książkę

Kup książkę

background image

70

_

Rozdzia 4. Alternatywy, grupy i odniesienia

Nazwane grupy

Nazwane grupy

to po prostu grupy przechwytywania wraz ze zdefinio-

wanymi nazwami. Dostp do takich grup odbywa si poprzez ich nazwy,
a nie liczby. Oto sposób uycia nazwanych grup w jzyku Perl:

perl -ne 'print if s/(?<one>It is) (?<two>an ancyent Marinere)/\u$+{two}
\l$+{one}/' rime.txt

Powysze polecenie dziaa nastpujco:

x

dodanie

?<one>

i

?<two>

w nawiasach powoduje zdefiniowanie nazw

dla danych grup, odpowiednio one i two;

x

$+{one}

odwouje si do grupy o nazwie one, natomiast

$+{two}

— do

grupy o nazwie two.

Nazwanych grup mona równie uywa wewntrz wzorca, w którym
zostay nazwane. Poniej wyjani Ci, co to oznacza. Przyjmujemy zaoe-
nie, e szukany jest cig tekstowy skadajcy si z szeciu zer:

000000

To nacigany przykad, ale ma za zadanie jedynie zademonstrowa spo-
sób dziaania. Grup trzech zer w podanym wzorcu nazywamy z (mona
uy dowolnej nazwy):

(?<z>0{3})

Nastpnie tak nazwanej grupy mona uy ponownie w taki sposób:

(?<z>0{3})\k<z>

taki:

(?<z>0{3})\k'z'

lub taki:

(?<z>0{3})\g{z}

Wypróbuj powysze wyraenia regularne w aplikacji RegExr i przekonaj si,
jaki jest wynik ich dziaania. W tabeli 4.3 wymieniono wiele przykadów
skadni odwoywania si do nazwanych grup.

Grupy nieprzechwytujce

Istniej równie tak zwane grupy nieprzechwytujce, to znaczy takie, które
nie przechowuj swojej zawartoci w pamici. Czasami takie rozwizanie
bdzie zalet, zwaszcza jeli nigdy nie masz zamiaru odwoa si do grupy.

Poleć książkę

Kup książkę

background image

Grupy nieprzechwytujce

_

71

Tabela 4.3. Skadnia nazwanych grup

Skadnia

Opis

(?<nazwa>...)

Nazwana grupa

(?nazwa...)

Inna nazwana grupa

(?P<nazwa>...)

Nazwana grupa (w jzyku Python)

\k<nazwa>

Odniesienie poprzez nazw (w jzyku Perl)

\k'nazwa'

Odniesienie poprzez nazw (w jzyku Perl)

\g{nazwa}

Odniesienie poprzez nazw (w jzyku Perl)

\k{nazwa}

Odniesienie poprzez nazw (w jzykach .NET)

(?P=nazwa)

Odniesienie poprzez nazw (w jzyku Python)

Poniewa grupa nie przechowuje swojej treci, jej dziaanie moe charak-
teryzowa si wiksz wydajnoci. Jednak w przypadku tak prostych
przykadów jak prezentowane w niniejszej ksice kwestie zwizane
z wydajnoci nie wystpuj.

Pamitasz pierwsz grup przedstawion w tym rozdziale? Dla przypo-
mnienia:

(the|The|THE)

Poniewa nie ma potrzeby odwoywania si do powyszej grupy, mona j
zdefiniowa jako grup nieprzechwytujc. Wymaga to wyraenia regu-
larnego w nastpujcej postaci:

(?:the|The|THE)

Opierajc si na materiale przedstawionym na pocztku rozdziau, po-
wysze wyraenie mona uzupeni o opcj powodujc, e wzorzec nie
rozrónia wielkoci liter (chocia w przypadku tej grupy nie trzeba doda-
wa wymienionej opcji):

(?i)(?:the)

Inny sposób:

(?:(?i)the)

Najlepiej jednak uy poniszego zapisu:

(?i:the)

Litera

i

opcji moe zosta umieszczona pomidzy znakiem zapytania i dwu-

kropkiem.

Poleć książkę

Kup książkę

background image

72

_

Rozdzia 4. Alternatywy, grupy i odniesienia

Grupy niepodzielne

Inny rodzaj grupy nieprzechwytujcej to tak zwana grupa niepodzielna.
Jeeli korzystasz z silnika wyrae regularnych obsugujcego sprawdza-
nie wsteczne (ang. backtracking), taka grupa spowoduje wyczenie spraw-
dzania wstecznego, ale nie w przypadku silnika wyrae regularnych, lecz
tylko w odniesieniu do czci wyraenia ujtej w grupie niepodzielnej.
Skadnia przedstawia si tak:

(?>the)

Do czego mog suy grupy niepodzielne? Jednym z czynników, który moe
naprawd spowolni przetwarzanie wyraenia regularnego, jest wanie
sprawdzanie wsteczne. Powód jest prosty: sprawdzenie wszystkich mo-
liwoci wymaga czasu i zasobów komputera. Czasami przetworzenie wy-
raenia regularnego moe pochon naprawd ogromn ilo czasu. Kiedy
sytuacja staje si powana, uywane jest okrelenie katastrofalne spraw-
dzanie wsteczne

.

Sprawdzanie wsteczne mona wyczy, uywajc silnika wyrae regu-
larnych pozbawionego jego obsugi, na przykad re2 (http://code.google.com/
p/re2/
), lub wyczajc sprawdzanie wsteczne dla fragmentów wyraenia
regularnego przez uycie grup niepodzielnych.

W niniejszej ksice skoncentrowaem si na przedstawieniu
skadni, dlatego niewiele miejsca powic na omówienie za-
gadnie optymalizacji prowadzcej do zwikszenia wydajnoci
dziaania wyrae regularnych. Z mojego punktu widzenia grupy
podzielne s stosowane przede wszystkim ze wzgldu na wy-
dajno.

Z rozdziau 5. dowiesz si wicej na temat klas znaków.

Poleć książkę

Kup książkę

background image

Informacje techniczne

_

73

Czego dowiedziae si z rozdziau 4.?

x

Alternatywa pozwala na wybranie z dwóch lub wikszej liczby wzorców.

x

Czym s modyfikatory oraz jak mona ich uywa we wzorcach?

x

Jakie s rodzaje podwzorców?

x

Jak uywa grup przechwytywania oraz odwoa wstecznych?

x

Jak uywa nazwanych grup oraz jak odwoywa si do nich?

x

Jak uywa grup nieprzechwytujcych?

x

Co to s grupy niepodzielne?

Informacje techniczne

x

rodowisko Adobe AIR pozwala na skorzystanie z technologii HTML,
JavaScript, Flash i ActionScript do tworzenia aplikacji sieciowych
dziaajcych jako samodzielne aplikacje po stronie klienta bez ko-
niecznoci uywania przegldarki internetowej do ich uruchamiania.
Wicej informacji na temat Adobe AIR znajdziesz na stronie http://
www.adobe.com/pl/products/air.html
.

x

Python (http://www.python.org/) to atwy do zrozumienia jzyk pro-
gramowania wysokiego poziomu. Python zawiera implementacj wy-
rae regularnych (zobacz http://docs.python.org/2/library/re.html).

x

.NET (http://www.microsoft.com/net) to platforma programistyczna opra-
cowana dla Windowsa. Ona równie zawiera implementacj wyrae
regularnych (zobacz http://msdn.microsoft.com/en-us/library/hs600312.aspx).

x

Bardziej zaawansowane objanienie 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
.

Poleć książkę

Kup książkę

background image

74

_

Rozdzia 4. Alternatywy, grupy i odniesienia

Poleć książkę

Kup książkę

background image

163

SKOROWIDZ

$1, 67
(?-…), 63
(?d), 63
(?i), 63
(?J), 63
(?m), 63
(?s), 63
(?u), 63
(?U), 63
(?x), 63
*, znak, 20
.*, 99
., znak, 19
.NET, 73
?, znak, 20
[[:^alpha:]], 81
[[:^xxxx:]], 81
[[:alnum:]], 81
[[:alpha:]], 81
[[:ascii:]], 81
[[:blank:]], 81
[[:ctrl:]], 81
[[:digit:]], 81
[[:graph:]], 81
[[:lower:]], 81
[[:print:]], 81
[[:punct:]], 81
[[:space:]], 81
[[:upper:]], 81

[[:word:]], 81
[[:xdigit:]], 81
[0-9], 17
[\b], 34
\0, 34, 92
\1, 19, 67
\a, 34
\A, 52
\cx, 34, 92
\d, 13, 18, 34
\D, 18, 32, 34
\dxx, 34
\E, 53
\f, 36
\h, 36
\H, 36
\l, 69
\L, 69
\n, 35, 36
\oxxx, 34
\Q, 53
\r, 35, 36
\s, 35, 36
\S, 36
\t, 35, 36
\u, 69
\U, 69
\uxxxx, 34
\v, 36

Poleć książkę

Kup książkę

background image

164

_ Skorowidz

\V, 36
\w, 32, 34
\W, 33, 34
\x xx, 34
\z, 52
\Z, 52
+, znak, 20

A

ack, narzdzie, 88, 89, 95
Adobe AIR, 73
alarm, 34
alternatywy, 62, 153
ASCII, 83, 153

tablica kodów, 147, 148, 149, 150,

151

AsciiDoc, 125
asercja, 47, 153

o zerowej dugoci, 47, 105, 153

atomy, Patrz metaznaki

B

Backspace, dopasowanie, 34, 93
Bell, dopasowanie, 92
BRE, 51, 153, 157
bufor roboczy, Patrz przestrze wzorca

C

code point, Patrz punkt kodowy
composability, 26, 160
cyfry, dopasowanie, 17, 18, 30, 34
Cygwin, 10

D

dopasowanie, 154

alarm, 34
Backspace, znak, 34, 93
Bell, znak, 92
cyfry, 18, 34

e-mail, 133
Esc, znak, 93
inny ni cyfra, znak, 18, 32, 34
inny ni niewidoczny, znak, 36
inny ni spacja, znak, 36
kontrolny, znak, 34, 92
leniwe, 154
liczba ósemkowa, 88
niepionowy tabulator, 36
niepoziomy znak niewidoczny, 36
niesowo, 33, 34
niewidoczny, znak, 35
nowy wiersz, znak, 35, 36
null, znak, 34, 92
numer telefonu, 132
okrelon liczb razy, 100
pionowy tabulator, 36
pocztek i koniec wiersza, 47, 48
powrót na pocztek wiersza,

znak, 35, 36

poziomy tabulator, 36
poziomy znak niewidoczny, 36
sowo, 32, 34
spacja, 36
tabulator, 35
Unicode, 34, 84
warto dziesitna znaku, 34
warto ósemkowa znaku, 34
warto szesnastkowa znaku, 34
wysunicie strony, znak, 36
zaborcze, 154
zachanne, 154
znaczniki, 112

dosowny cig tekstowy, 17, 29, 154

E

echo, polecenie, 40
ed, edytor, 154
egrep, narzdzie, 155
e-mail, dopasowanie, 133
ERE, 51, 154, 158
Esc, dopasowanie, 93

Poleć książkę

Kup książkę

background image

Skorowidz

_ 165

F

fgrep, narzdzie, 155
flaga, Patrz modyfikator
fragment, 154

G

ga, 155
Git, 44
GitHub, 44
granice, Patrz kwantyfikatory
grep, narzdzie, 51, 59, 155
grupy, 155

niepodzielne, 72, 155
nieprzechwytujce, 70, 155
przechwytywania, 19, 67, 155

gwiazda Kleene'a, 99
gwiazdka, znak, 20

H

HTML5, 44

K

katastrofalne sprawdzanie wsteczne,

72, 156

klasy znaków, 17, 75, 76, 77, 156

negacja, 77
POSIX, 80, 81, 145

Kleene, Stephen, 7
kotwice, 47, 52, 156
kropka, znak, 19, 37
kwantyfikatory, 20, 97, 98, 156

leniwe, 98, 101, 102
podstawowe, 100
zaborcze, 98, 103, 104
zachanne, 98

L

Levithan, Steven, 27
litera, 29, 156
Lovitt, Michael, 82

M

McMahon, Lee, 40
metaznaki, 17, 137, 156
modyfikatory, 146, 156

N

nazwane grupy, 70, 71
negacja, 157
negatywne przewidywanie wsteczne,

109, 157

niepionowy tabulator, dopasowanie,

36

niepoziomy znak niewidoczny,

dopasowanie, 36

niesowo

dopasowanie, 33, 34
granice, 49, 50

Notepad++, edytor, 24, 26
null, dopasowanie, 34, 92
numer telefonu, dopasowanie, 16, 17,

18, 19, 20, 21, 22, 132

O

odwoania wsteczne, 19, 67, 157
ograniczone wystpienia, Patrz

kwantyfikatory

Oniguruma, 131
opcje, 146, 157
Opera Next, 82
Oxygen, edytor, 24, 26

Poleć książkę

Kup książkę

background image

166

_ Skorowidz

P

PCRE, 59, 130
pcregrep, 52, 130
Perl, 42, 43, 45, 130, 157

dodawanie znaczników, 57, 119
modyfikatory, 65, 146
obsuga liczb rzymskich, 122
obsuga wierszy, 122
plik polece, 123

perldoc, 126
pionowy tabulator, dopasowanie, 36
plus, znak, 20
podstawowe wyraenia regularne,

Patrz BRE

podwzorzec, 65, 66
POSIX, 80, 82, 157

klasy znaków, 145

poziomy tabulator, dopasowanie, 36
poziomy znak niewidoczny,

dopasowanie, 36

pozytywne przewidywanie wsteczne,

109, 157

przestrze wzorca, 158
przewidywania, 105, 158

negatywne, 108
pozytywne, 105
wstecz, 158

punkt kodowy, 14, 158
Python, 73, 131

Q

QED, edytor, 7, 13, 135

wyraenia regularne, 136

R

Rackham, Stuart, 125
RE2, 132
Regex Hero, aplikacja, 85, 94
RegexPal, 14, 15, 26

RegExr, 27, 28, 44

dodawanie znaczników, 54, 55

Reggy, aplikacja, 78, 82
rozszerzone wyraenia regularne,

Patrz ERE

Rubular, aplikacja, 80, 82
Ruby, 131

S

sed, narzdzie, 40, 44, 159

dodawanie znaczników, 55, 56,

113

obsuga liczb rzymskich, 115
obsuga wierszy, 116
plik polece, 118
zastpowanie znaków, 114

Skinner, Grant, 27
sowo

dopasowanie, 32, 34
granice, 49, 50

spacja, dopasowanie, 36
sprawdzanie wsteczne, 98, 159
system szesnastkowy, 159

T

tabulator, dopasowanie, 35
TextMate, edytor, 23, 26
Thomson, Ken, 7, 13, 59, 154, 155

U

Unicode, 83, 159

dla znaków niewidocznych, 139,

140

dopasowanie, 34, 84
waciwoci znaku, 88, 90, 91

utrzymywana przestrze, 160
utrzymywany bufor, Patrz

utrzymywana przestrze

Poleć książkę

Kup książkę

background image

Skorowidz

_ 167

V

vi, edytor, 51, 59, 160
vim, edytor, 51, 59, 94, 160

dopasowanie znaku Unicode, 87

W

Wall, Larry, 42
warto dziesitna znaku,

dopasowanie, 34

warto ósemkowa znaku,

dopasowanie, 34

warto szesnastkowa znaku,

dopasowanie, 34

wiersz, pocztek i koniec, 47, 48
waciwoci znaku, 142, 143
wyraenia regularne, 7, 13, 161

opcje, 63

wyraenia w nawiasach,

Patrz klasy znaków

wzorce, 27

Z

zakres, 31

skadnia, 101

zestaw znaków, 17, 77, 161
znaczniki, dopasowanie, 112

znak inny ni cyfra, dopasowanie, 18,

32, 34

znak inny ni spacja, dopasowanie,

36

znak kontrolny, dopasowanie, 34, 92,

140, 141

znak niewidoczny, dopasowanie, 35,

139, 140

znak nowego wiersza, dopasowanie,

35, 36

znak ósemkowy, 161
znak powrotu na pocztek wiersza,

dopasowanie, 35, 36

znak sterujcy, 18, 161
znak wysunicia strony,

dopasowanie, 36

znak zapytania, 20
znaki skrótów, 14, 18, 138

dla znaków niewidocznych, 36,

139

lista, 34

Poleć książkę

Kup książkę

background image

O autorze

Michael Fitzgerald to programista i konsultant, napisa 10 ksiek technicz-
nych dla wydawnictw O’Reilly oraz John Wiley & Sons, jak równie kilka ar-
tykuów dla serwisu O’Reilly Network. By take czonkiem komisji, która
opracowaa RELAX NG, czyli jzyk schematów do jzyka XML.

Kolofon

Zwierz na okadce ksiki Wyraenia regularne. Wprowadzenie to nietoperz
owocowy.

Nietoperz owocowy naley do podrzdu nietoperzy owocoernych (Megachi-
roptera
) i rodziny rudawkowatych (Pteropodidae), bywa równie nazywany la-
tajcym lisem lub latajcym psem. Pomimo swojej nazwy poszczególne osob-
niki wchodzce w skad caej rodziny rudawkowatych mog znacznie róni si
rozmiarem ciaa — najmniejszy przedstawiciel mierzy zaledwie sze centy-
metrów, podczas gdy inny osobnik moe way okoo kilograma, a rozpito
skrzyde moe wynosi nawet okoo pótora metra.

Jednak zgodnie ze swoj nazw nietoperze owocowe, tak jak i inne nietoperze
owocoerne, odywiaj si albo owocami, albo nektarem kwiatowym. Niektóre
przegryzaj zbami skórk owocow, aby nastpnie wyjada misz owocowy
ze rodka, podczas gdy inne zlizuj sok z uszkodzonego owocu. Ze wzgldu
na fakt, e nietoperze owocowe odywiaj si nektarem, odgrywaj donios
rol w rozmnaaniu rolin, poniewa wietnie przenosz pyki i nasiona. Orga-
nizacja World Bat Sanctuary (wiatowe Sanktuarium Nietoperzy) szacuje, e
okoo 95% wszystkich nowo powstaych lasów deszczowych wyroso dziki
aktywnoci wanie nietoperzy owocowych. Ta zaleno midzy nietoperza-
mi i rolinami jest form mutualizmu — interakcji biologicznej organizmów
nalecych do rónych gatunków, prowadzcej do obopólnych korzyci — zwan
w tym wypadku chiropterologi.

Nietoperze owocoerne wystpuj praktycznie na caym wiecie, jednake ich
ulubionym miejscem ycia s ciepe, tropikalne klimaty, bogate w owoce i kwiaty.
Chocia wietnie opanoway umiejtno latania, znane s ze swego niezdarnego
ldowania — czsto lduj, rozbijajc si na drzewach, a gdy staraj si zatrzyma,
próbuj chwyci koczyny stopami. Takie zachowanie utrwala bdne przekonanie,
e s lepe. W rzeczywistoci maj jednak najlepszy wzrok sporód wszystkich
nietoperzy, które musz polega jedynie na zmyle echolokacji. Nietoperze owoco-
erne do zlokalizowania poywienia i nawigacji uywaj wzroku oraz wchu.

Obrazek na okadce ksiki pochodzi z Cassell’s Natural History.

Poleć książkę

Kup książkę

background image
background image

Wyszukiwarka

Podobne podstrony:
Wyrazenia regularne Wprowadzenie wyrawp
Wyrazenia regularne Wprowadzenie wyrawp
Wyrazenia regularne Wprowadzenie 2
informatyka wyrazenia regularne wprowadzenie michael fitzgerald ebook
test nr 7 wyrażenia regularne, STUDIA, LIC, TECHNOGIE INFORMACYJNE POLONISTYKA ZAOCZNE UW Uniwersyt
205 Wyrażenia regularne
LAB 5 wyrazenia regularne
ćw4 Automaty skończone, gramatyki, wyrażenia regularne
205 zastosowanie jezyka wyrazen regularnych do syntezy automatow, Politechnika Wrocławska - Materiał
test nr 7 wyrażenia regularne, STUDIA, LIC, TECHNOGIE INFORMACYJNE POLONISTYKA ZAOCZNE UW Uniwersyt
205 Wyrażenia regularne
wyrażenia regularne i filtry tekstowe
Wyrazenia regularne Leksykon kieszonkowy wyralk
Wyrazenia regularne Receptury wyrere

więcej podobnych podstron