background image

LAB 4 :Wyra

Ŝ

enia regularne 

Po co s

ą

 wyra

Ŝ

enia regularne?  

Cz

ę

stym zadaniem, które wykonuje si

ę

 podczas pracy z komputerem jest wyszukiwanie danego fragmentu tekstu w jakim

ś

 pliku, zmienianie go, 

sprawdzanie, czy dany tekst si

ę

 w tym pliku znajduje. Generalnie potrzebujemy narz

ę

dzi do znajdywania wzorca o zadanej charakterystyce w jakim

ś

 

wi

ę

kszym tek

ś

cie. T

ą

 charakterystyk

ę

 musimy jako

ś

 podawa

ć

. W najprostszym przypadku podajemy po prostu tekst, jaki chcemy znale

źć

. Na przykład, aby 

znale

źć

 wszystkie linie w pliku 

tekst.txt

, w których znajduje si

ę

 fragment 

est

, wystarczy wykona

ć

 polecenie  

grep est tekst.txt 

Wtedy dla pliku 

tekst.txt

 o zawarto

ś

ci  

To jest plik tekstowy. 

Testujemy narz

ę

dzie grep. 

Trzecia linia. 

A to czwarta linia. 

To jest pi

ą

ta linia. 

w wyniku otrzymamy  

To jest plik tekstowy. 

Testujemy narz

ę

dzie grep. 

To jest pi

ą

ta linia. 

Zamiast wyszukiwa

ć

 dan

ą

 fraz

ę

, mo

Ŝ

emy chcie

ć

 znale

źć

 bardziej skomplikowane wzorce, jak na przykład wszystkie adresy email, które znajduj

ą

 si

ę

 w 

danym tek

ś

cie, czy te

Ŝ

 wszystkie formy słowa pies. W tych celach potrzebne s

ą

 bardziej zaawansowane mo

Ŝ

liwo

ś

ci podawania charakterystyki frazy, której 

chcemy szuka

ć

. Tak

ą

 mo

Ŝ

liwo

ść

 daj

ą

 wła

ś

nie wyra

Ŝ

enia regularne.  

Składnia  

Znaki  

Najprostsze wyra

Ŝ

enia regularne składaj

ą

 si

ę

 z ci

ą

gu znaków. Niektóre znaki s

ą

 specjalne, wi

ę

c aby rozpozna

ć

 który

ś

 z nich, trzeba poprzedza

ć

 go 

backslashem. Nast

ę

puj

ą

ce znaki s

ą

 specjalne: 

.

 

^

 

$

 

*

 

?

 

[

 

]

 

\

. Na przykład, aby wyszuka

ć

 w tek

ś

cie fraz

ę

 

\abc[?]

 u

Ŝ

ywamy wyra

Ŝ

enia 

\\abc\[\?\]

.  

Klasy znaków  

Przypu

ść

my, 

Ŝ

e chcemy znale

źć

 wyst

ą

pienie jednego z ła

ń

cuchów 

psa

psu

 i 

psy

. Zatem pierwsze dwa znaki s

ą

 ustalone i s

ą

 to 

ps

. Natomiast przy 

trzecim znaku mamy pewn

ą

 dowolno

ść

. Chcemy, aby trzeci znak mógł by

ć

 równy 

a

u

 lub 

y

. Do tego słu

Ŝą

 klasy znaków. List

ę

 znaków, któr

ą

 chcemy 

rozpozna

ć

, umieszczamy pomi

ę

dzy nawiasami kwadratowymi: 

[auy]

. Nasze wyra

Ŝ

enie wygl

ą

da wi

ę

c tak: 

ps[auy]

.  

bashtest@host:~$ grep ps[auy] <<KONIEC 

> psami 

background image

> psom 

> psu 

> ps 

> KONIEC 

psami 

psu 

bashtest@host:~$ 

W klasach mo

Ŝ

emy podawa

ć

 przedziały znaków u

Ŝ

ywaj

ą

c my

ś

lnika. Na przykład 

[0-9]

 rozpoznaje dowoln

ą

 cyfr

ę

. Mo

Ŝ

emy podawa

ć

 kilka przedziałów: 

[a-zA-Z]

 rozpozna dowoln

ą

 liter

ę

 angielsk

ą

.  

Je

ś

li umie

ś

cimy znak 

^

 na pocz

ą

tku opisu klasy, b

ę

dzie to oznacza

ć

 rozpoznawanie wszystkich znaków nie znajduj

ą

cych si

ę

 na li

ś

cie. Na przykład 

[^xX]

 

oznacza dowolny znak ró

Ŝ

ny od 

x

 i 

X

. Oczywi

ś

cie mo

Ŝ

emy podawa

ć

 te

Ŝ

 przedziały.  

Je

ś

li chcemy umie

ś

ci

ć

 na li

ś

cie znak 

]

, nale

Ŝ

y go poda

ć

 jako pierwszy na li

ś

cie. Aby umie

ś

ci

ć

 

^

, nale

Ŝ

y go umie

ś

ci

ć

 w dowolnym miejscu, byle nie na 

pocz

ą

tku. Wreszcie, aby umie

ś

ci

ć

 

-

, nale

Ŝ

y go umie

ś

ci

ć

 na ko

ń

cu listy.  

Ponadto mamy mo

Ŝ

liwo

ść

 kojarzenia dowolnego znaku oprócz znaku ko

ń

ca linii. Do tego słu

Ŝ

y znak specjalny 

.

 (kropka).  

Powtórzenia  

Znak specjalny 

*

 próbuje dopasowa

ć

 poprzedzaj

ą

cy go element zero lub wi

ę

cej razy w szukanym tek

ś

cie. Na przykład 

=*

 dopasowuje si

ę

 do ci

ą

gu znaków 

równo

ś

ci (by

ć

 mo

Ŝ

e ci

ą

gu pustego).  

Inny przykład, wyra

Ŝ

enie 

[a-zA-Z][a-zA-Z0-9_]*

 reprezentuje identyfikator, tzn. niepusty ła

ń

cuch znaków zaczynaj

ą

cy si

ę

 od litery i składaj

ą

cy si

ę

 z 

liter, cyfr oraz znaków podkre

ś

lenia.  

Znak specjalny 

+

 jest podobny do 

*

 z tym, 

Ŝ

e próbuje on dopasowa

ć

 poprzedzaj

ą

cy go element jeden lub wi

ę

cej razy.  

Znak specjalny 

?

 mówi, 

Ŝ

e poprzedzaj

ą

cy element mo

Ŝ

e wyst

ą

pi

ć

, b

ą

d

ź

 te

Ŝ

 nie. Na przykład wyra

Ŝ

enie 

-?[0-9]+

 oznacza dowolny niepusty ci

ą

g cyfr, by

ć

 

mo

Ŝ

e poprzedzony znakiem 

-

. Czyli takie wyra

Ŝ

enie mo

Ŝ

e słu

Ŝ

y

ć

 do rozpoznawania dowolnej liczby całkowitej (je

Ŝ

eli dopu

ś

cimy to, 

Ŝ

e zapis dziesi

ę

tny 

liczby mo

Ŝ

e mie

ć

 wiod

ą

ce zera).  

Ponadto ilo

ść

 powtórze

ń

 mo

Ŝ

na poda

ć

 bardziej w uniwersalny sposób:  

symbol powtórzenia   liczba powtórze

ń

 poprzedzaj

ą

cego elementu  

{n}

  

dokładnie 

n

  

{n,}

  

co najmniej 

n

  

{,m}

  

co najwy

Ŝ

ej 

m

  

{n,m}

  

co najmniej 

n

 i co najwy

Ŝ

ej 

m

  

Pozycjonowanie  

Znaczniki pozycjonuj

ą

ce s

ą

 takimi symbolami, które nie s

ą

 kojarzone z 

Ŝ

adnym ci

ą

giem znaków, ale z pozycj

ą

 w tek

ś

cie spełniaj

ą

c

ą

 pewne ustalone warunki.  

background image

Je

ś

li chcemy, aby wzorzec był dopasowywany od pocz

ą

tku linii, wyra

Ŝ

enie zaczynamy znakiem 

^

. Je

ś

li chcemy, aby wzorzec był dopasowywany do ko

ń

ca 

linii, wyra

Ŝ

enie ko

ń

czymy znakiem 

$

. Gdy u

Ŝ

yjemy oba znaki, wzorzec b

ę

dzie dopasowywany do całej linii.  

Na przykład, 

Ŝ

eby znale

źć

 linie, w których znajduje si

ę

 dokładnie jedna kropka, mo

Ŝ

emy u

Ŝ

y

ć

 wyra

Ŝ

enia 

^[^.]*\.[^.]*$

. U

Ŝ

ycie 

^

 na pocz

ą

tku i 

$

 na 

ko

ń

cu oznacza, 

Ŝ

e zawsze b

ę

dzie próba dopasowania całej linii. Nast

ę

pnie 

[^.]*

 oznacza dowolny ci

ą

g znaków nie zawieraj

ą

cy kropki, a 

\.

 oznacza 

wyst

ą

pienie kropki (trzeba u

Ŝ

y

ć

 

\

, bo 

.

 jest znakiem specjalnym).  

Aby znale

źć

 lini

ę

, która zaczyna si

ę

 od dowolnej liczby spacji, liczby, pó

ź

niej kropki, a nast

ę

pnie spacji i du

Ŝ

ej litery, u

Ŝ

ywamy wyra

Ŝ

enia 

^ *[0-9][0-

9]*\. *[A-Z]

. Za pomoc

ą

 tego wyra

Ŝ

enia zostan

ą

 znalezione na przykład  

1. Wst

ę

   2.Wprowadzenie 

 13.   Zako

ń

czenie 

a nie zostan

ą

 znalezione takie linie  

1 Trafienie 

 3. echo - komenda wbudowana 

     4 . Punkt czwarty 

   2006 

^ 1. Wst

ę

Oprócz znaczników rozpoznaj

ą

cych pocz

ą

tek i koniec linii, mamy te

Ŝ

 szereg znaczników rozpoznaj

ą

cych ko

ń

ce słowa:  

\<

 

znacznik mówi

ą

cy, 

Ŝ

e w tym miejscu zaczyna si

ę

 nowe słowo  

\>

 

znacznik mówi

ą

cy, 

Ŝ

e w tym miejscu ko

ń

czy si

ę

 słowo  

\b

  znacznik mówi

ą

cy, 

Ŝ

e w tym miejscu jest kraw

ę

d

ź

 słowa (nie zaczyna ani nie ko

ń

czy si

ę

 

Ŝ

adne słowo)  

\B

 

znacznik mówi

ą

cy, 

Ŝ

e w tym miejscu nie znajduje si

ę

 kraw

ę

d

ź

 słowa  

Dokładne definicje, co to jest brzeg słowa, s

ą

 nieprzyjemnie skomplikowane i je pominiemy. Przyjrzyjmy si

ę

 przykładowi. Dla frazy 

Jola jest lojalna

 

nast

ę

puj

ą

ce wyra

Ŝ

enia zostan

ą

 dopasowane do wycinka tej frazy:  

 

\<jest\>

  

 

\bjest\b

  

 

\Best\b

  

 

\Bes\B

  

a poni

Ŝ

sze wyra

Ŝ

enia nie zostan

ą

 dopasowane:  

 

\<est\>

  

 

\best\b

  

 

\Bes\b

  

 

\>jest\<

  

background image

Alternatywa  

Je

ś

li chcemy, aby był rozpoznawany jeden z dwóch mo

Ŝ

liwych napisów, to mo

Ŝ

emy u

Ŝ

y

ć

 alternatywy 

|

, na przykład 

jeden|dwa

 rozpozna albo słowo 

jeden

 albo słowo 

dwa

. Operator 

|

 mo

Ŝ

e mie

ć

 jako argumenty te

Ŝ

 inne wyra

Ŝ

enia, na przykład 

[0-9]*|[a-z]*|[A-Z]*

 rozpoznaje albo ci

ą

g cyfr, albo 

ci

ą

g małych liter, albo ci

ą

g du

Ŝ

ych liter.  

Priorytety i nawiasowanie  

Najwi

ę

kszy priorytet maj

ą

 operatory powtórzenia. Je

ś

li chcemy mie

ć

 wyra

Ŝ

enie oznaczaj

ą

ce powtórzenie wi

ę

kszej liczby elementów, to mo

Ŝ

emy zrobi

ć

 to 

poprzez stosowanie nawiasów 

( ... )

. Na przykład wyra

Ŝ

enie 

([a-z][a-z])*

 oznacza ci

ą

g składaj

ą

cy si

ę

 z parzystej liczby małych literek.  

Najmniejszy priorytet ma alternatywa. Je

ś

li chcemy wpisa

ć

 wyra

Ŝ

enie, które rozpoznaje wszystkie słowa, które rozpoczynaj

ą

 si

ę

 od 

Ta

 lub od 

Do

, to nie 

mo

Ŝ

emy napisa

ć

 

Ta|Do[a-z]*

, gdy

Ŝ

 takie wyra

Ŝ

enie rozpoznaje albo słowo 

Ta

, albo ci

ą

g literek zaczynaj

ą

cy si

ę

 od 

Do

. Z pomoc

ą

 przychodz

ą

 nawiasy: 

(Ta|Do)[a-z]*

.  

Wyra

Ŝ

enia podstawowe i rozszerzone  

Wyra

Ŝ

enia regularne dzielimy na podstawowe i rozszerzone. W wyra

Ŝ

eniach podstawowych znaki 

?

+

{

|

(

)

 nie maj

ą

 specjalnego znaczenia, zamiast 

nich trzeba u

Ŝ

ywa

ć

 wersji z backslashem: 

\?

\+

\{

\|

\(

\)

. W wyra

Ŝ

eniach rozszerzonych mo

Ŝ

emy stosowa

ć

 wszystkie wymienione znaki specjalne.  

Rozró

Ŝ

nienie takie powstało na skutek ró

Ŝ

nych narz

ę

dzi i zachowania kompatybilno

ś

ci mi

ę

dzy nimi. Niektóre narz

ę

dzia u

Ŝ

ywaj

ą

 składni z podstawowymi, a 

niektóre z rozszerzonymi wersjami wyra

Ŝ

e

ń

 regularnych. Przy omawianiu poszczególnych komend powiemy, które u

Ŝ

ywaj

ą

 jakiej składni.  

Przykłady wykorzystania  

grep  

Polecenie 

grep

 jest podstawowym narz

ę

dziem do wyszukiwania wzorca w tek

ś

cie z u

Ŝ

yciem wyra

Ŝ

e

ń

 regularnych. 

grep

 u

Ŝ

ywa podstawowych wyra

Ŝ

e

ń

Je

ś

li jest potrzeba u

Ŝ

ycia rozszerzonych wyra

Ŝ

e

ń

 mo

Ŝ

na u

Ŝ

y

ć

 wtedy w zast

ę

pstwie polecenia 

egrep

.  

Podstawowe u

Ŝ

ycie, to  

grep wzorzec 

gdzie wzorzec jest wyra

Ŝ

eniem regularnym. Wzorzec jest wyszukiwany w standardowym wej

ś

ciu i na standardowe wyj

ś

cie s

ą

 wypisywane linie zawieraj

ą

ce 

wzorzec.  

Mo

Ŝ

na poda

ć

 plik lub pliki jako argumenty:  

grep wzorzec plik 

lub  

grep wzorzec plik1 plik2 ... 

W przypadku jednego pliku, działanie jest takie samo jak bez argumentów, z t

ą

 ró

Ŝ

nic

ą

Ŝ

e dane s

ą

 czytane z pliku, a nie ze standardowego wej

ś

cia.  

W wersji z wieloma plikami wzorzec wyszukiwany jest w ka

Ŝ

dym pliku. Wy

ś

wietlane s

ą

 linie zawieraj

ą

ce wyst

ą

pienie wzorca poprzedzone nazw

ą

 pliku, w 

którym został on znaleziony.  

background image

Ponadto jest wiele opcji kontroluj

ą

cych sposób szukania i wy

ś

wietlane informacje. Omówimy najprzydatniejsze z nich.  

-e wzorzec

   

alternatywny sposób podania wzorca; przydatny, gdy wyra

Ŝ

enie regularne mo

Ŝ

e zaczyna

ć

 si

ę

 od znaku 

-

  

-i

   

ignoruje rozró

Ŝ

nianie wielkich liter,  

-c

   

zlicza tylko liczb

ę

 wyst

ą

pie

ń

 wzorca,  

-w

   

dopasowuje wzorzec tylko do całych słów,  

-x

   

dopasowuje wzorzec tylko do całych linii,  

-v

   

odwraca sens dopasowania i wyszukuje tylko linie w których nie udało si

ę

 dopasowa

ć

 wzorca,  

-q

   

nic nie wypisuje na standardowe wyj

ś

cie i ko

ń

czy działania na pierwszym dopasowaniu; przydatne, gdy polecenie 

grep

 chcemy u

Ŝ

y

ć

 jako 

warunku.  

grep

 zwraca zero jako kod wyj

ś

cia, gdy wzorzec uda si

ę

 znale

źć

 i warto

ść

 niezerow

ą

 w przeciwnym przypadku. Mo

Ŝ

na to wykorzysta

ć

 w poł

ą

czeniu z opcj

ą

 

-q

 w instrukcjach warunkowych. Na przykład  

if grep -qw TODO opis_prac.txt; then 

  echo "Zostało jeszcze co

ś

 do zrobienia" 

fi 

Je

ś

li chcemy z pliku usun

ąć

 linie, które pasuj

ą

 do wzorca mo

Ŝ

emy zrobi

ć

 to w nast

ę

puj

ą

cy sposób:  

TMPFILE=/tmp/xyzabcd 

cp plik $TMPFILE 

grep -xv wzorzec $TMPFILE >plik 

rm -f $TMPFILE 

expr  

Polecenie 

expr

 oprócz obliczania wyra

Ŝ

e

ń

 arytmetycznych ma te

Ŝ

 podstawowe operacje na ła

ń

cuchach znakowych. Szczególnie przydatny jest operator 

:

Jego składnia to  

expr ła

ń

cuch : wzorzec 

Wzorzec jest wyszukiwany na pocz

ą

tku ła

ń

cucha (czyli tak jakby zawsze na pocz

ą

tku wzorca stał 

^

). Je

ś

li zostanie on znaleziony, wypisywana jest liczba 

dopasowanych znaków. W przeciwnym razie liczba dopasowanych znaków wynosi 0.  

Je

Ŝ

eli we wzorcu były u

Ŝ

ywane nawiasy 

\(

 i 

\)

, zwracany jest ła

ń

cuch dopasowany w tym podwyra

Ŝ

eniu.  

Status wyj

ś

cia jest równy zero tylko wtedy, gdy do wzorca uda si

ę

 dopasowa

ć

 niepusty ci

ą

g znaków.  

background image

Oto kilka przykładów:  

 

Wy

ś

wietlenie rozszerzenia pliku znajduj

ą

cego si

ę

 na zmiennej plik:  

expr "$plik" : ".*\.\([^.]*\)" 

 

Zmiana rozszerzenia z 

tar.gz

 na 

tgz

 pliku na zmiennej plik:  

if expr "$plik" : ".*\.tar\.gz$"; then 

  mv $plik `expr "$plik" : "\(.*\.\)tar\.gz"`tgz 

fi 

oczywi

ś

cie 

if

 jest zb

ę

dny je

ś

li wiemy, 

Ŝ

e nazwa pliku na pewno ko

ń

czy si

ę

 na 

.tar.gz

.  

sed  

Najpro

ś

ciej rzecz ujmuj

ą

sed

 jest edytorem strumieniowym. Czyta ze standardowego wej

ś

cia lub z pliku, je

ś

li został podany jako argument, nast

ę

pnie 

wykonuje operacje podane w komendach edycyjnych i wynik wyrzuca zawsze na standardowe wyj

ś

cie.  

Najcz

ęś

ciej 

sed

 jest u

Ŝ

ywany z komend

ą

 edycyjn

ą

 postaci 

s/wzorzec/zamiennik/

, gdzie 

wzorzec

 jest podstawowym wyra

Ŝ

eniem regularnym, a 

zamiennik

 jest ła

ń

cuchem znakowym jakim b

ę

dzie zast

ą

piony znaleziony wzorzec. W ła

ń

cuchu 

zamiennik

 mo

Ŝ

emy u

Ŝ

ywa

ć

 specjalnych sekwencji 

odnosz

ą

cych si

ę

 do znalezionego tekstu. 

\

n, gdzie n jest liczb

ą

, oznacza ła

ń

cuch skojarzony z n-t

ą

 par

ą

 nawiasów 

\( ... \)

. Znak 

&

 kojarzy z całym 

znalezionym ła

ń

cuchem.  

Na przykład, aby zamieni

ć

 ka

Ŝ

dy ci

ą

g wykrzykników w jeden wykrzyknik mo

Ŝ

na u

Ŝ

y

ć

 komendy 

s/!\+/!/

:  

bashtest@host:~$ echo 'Hej!! Hej!!!! Tutaj!' | sed 's/!\+/!/' 

Hej! Hej!!!! Tutaj! 

bashtest@host:~$ 

Domy

ś

lnie 

sed

 wykonuje zast

ą

pienie tylko przy pierwszym skojarzeniu wzorca w danej linii. Aby szukał wszystkich skojarze

ń

 nale

Ŝ

y doda

ć

 przyrostek 

g

 do 

komendy edycyjnej:  

bashtest@host:~$ echo 'Hej!! Hej!!!! Tutaj!' | sed 's/!\+/!/g' 

Hej! Hej! Tutaj! 

bashtest@host:~$ 

Aby zamieni

ć

 znak 

.

 na znak 

,

 we wszystkich liczbach zmiennopozycyjnych mo

Ŝ

emy u

Ŝ

y

ć

 komendy  

s/\([0-9]\+\)\.\([0-9]\+\)/\1,\2/g 

U

Ŝ

yli

ś

my tutaj odno

ś

ników. 

\1

 oznacza grup

ę

 cyfr przed 

.

 w znalezionym ła

ń

cuchu, a 

\2

 oznacza grup

ę

 cyfr po 

.

.  

Do rozdzielania komendy 

s

 nie trzeba wcale u

Ŝ

ywa

ć

 znaku 

/

, ale mo

Ŝ

e to by

ć

 dowolny wybrany znak. Na przykład komenda  

background image

s+C:\\+/mnt/win/+g

 

zamieni wszystkie wyst

ą

pienia 

C:\

 na 

/mnt/win/

.  

sed

 mo

Ŝ

e te

Ŝ

 słu

Ŝ

y

ć

 do filtrowania wej

ś

cia. Opcja 

-n

 powoduje, 

Ŝ

e domy

ś

lnie nic nie jest wypisywane. Trzeba doda

ć

 przyrostek 

p

 do komendy, aby wynik 

został wypisany. Na przykład  

sed -n 's/[a-zA-Z0-9]/&/p' opis.txt 

wypisze tylko te linie pliku 

opis.txt

, które zawieraj

ą

 znak alfanumeryczny.  

Ponadto 

sed

 posiada znacznie wi

ę

cej ró

Ŝ

nych u

Ŝ

ytkowych funkcji. Mo

Ŝ

na poprzedzi

ć

 komend

ę

 adresem. Na przykład 

sed '20s/.../.../'

 zadziała 

tylko w 20 linii. Adresem mo

Ŝ

e by

ć

 numer linii, wyra

Ŝ

enie regularne albo zakres. S

ą

 te

Ŝ

 inne komendy, na przykład 

sed '/^#/d'

 usunie wszystkie linie, 

które zaczynaj

ą

 si

ę

 od znaku 

#

.  

 

Przykłady 

1. 

Podaj wyra

Ŝ

enie regularne rozpoznaj

ą

ce adres strony http. 

2. 

Podaj wyra

Ŝ

enie regularne rozpoznaj

ą

ce adres mail  

3. 

Podaj wyra

Ŝ

enie regularne rozpoznaj

ą

ce kod pocztowy  

4. 

Podaj wyra

Ŝ

enie regularne rozpoznaj

ą

ce numerowane linie na pocz

ą

tku wiersza. 

5. 

Podaj wyra

Ŝ

enie regularne rozpoznaj

ą

ce komentarz w j

ę

zyku C: 

/* ... */

.  

/\*([^*]|(\*+[^*/]))*\*+/ 

6. 

Podaj wyra

Ŝ

enie regularne rozpoznaj

ą

ce słowa, w których wyst

ę

puje parzysta liczba wyst

ą

pie

ń

 litery 

a

.  

 [b-z]*(a[b-z]*a[b-z]*)* 

7. 

*

 Podaj wyra

Ŝ

enie regularne, które rozpoznaje ci

ą

g znaków składaj

ą

cy si

ę

 z parzystej liczby wyst

ą

pie

ń

 znaku 

a

 i znaku 

b

 

(aa|bb|(ab|ba)(aa|bb)*(ab|ba))* 

 

 

Wi

ę

cej wiadomo

ś

ci na: 

1. 

http://wyrazenia-regularne.pl/

 

2. 

http://www.regular-expressions.info/quickstart.html

 

3. 

http://pl.wikipedia.org/wiki/Wyra%C5%BCenia_regularne

 

4. 

http://www.digipedia.pl/man/grep.1.html

 

background image

5. 

http://www.uky.edu/AS/Classics/regex.html

 

Opracowano na podstawie: http://wazniak.mimuw.edu.pl/index.php?title=%C5%9Arodowisko_programisty/Wyra%C5%BCenia_regularne