[ 27. January 2000]
- Svato_Straka
Regulßrne v²razy III. - 8. Φas¥ CGI
V dneÜnej (poslednej) Φasti rozpravy o regulßrnych v²razoch v Perli si povieme Φosi o modifikßtoroch, ktorΘ sme si doteraz nespomenuli, rovnako sa pozrieme na prφkaz nahradenia, ktor² nie je reg. v²razom i ke∩ sa rovnako pou₧φva a vyzerß.
Tie₧ nßs Φakß prφkaz split, ktor² uzatvßra mno₧inu zßkladn²ch prφkazov ·zko spojen²ch s reg. v²razmi.
Modifikßtory reg. v²razov
Prßca operßtorov porovnania (m// ) a nahradenia (s/// ) m⌠₧e by¥ ovplyvnenß nieko╛k²mi modifikßtormi:
Modifikßtor
|
V²znam
|
g
|
H╛adß globßlne, nachßdza vÜetky v²skyty
|
i
|
Vyh╛adßva v²skyty bez oh╛adu na ve╛kos¥ pφsmen
|
m
|
Zaobhßdza s re¥azcom ako s viacer²mi riadkami
|
o
|
Prekladß vzor len raz
|
s
|
Zaobchßdza s re¥azcom ako s jedn²m riadkom
|
x
|
Pou₧φva rozÜφrenΘ reg. v²razy
|
e
|
Vyhodnotφ prav· stranu ako v²raz (len s///)
|
Operßtor porovnania m// mß nasl. zßkladn· syntax:
m/VZOR/gimosx
/VZOR/gimosx
Operßtor preh╛adßva v²raz na zhodu s re¥azcom VZOR a vrßti true alebo false. Ak je oddelovaΦom v tomto oerßtore znak "/", ·vodnΘ "m" sa nemusφ uvßdza¥. Ako oddelovaΦe m⌠₧u by¥ pou₧itΘ ╛ubovo╛nΘ nealfanumerickΘ znaky.
Re¥azec VZOR m⌠₧e obsahova¥ vlo₧enΘ premennΘ. Toto vÜak vyh╛adßvanie spoma╛uje, preto₧e premennß sa musφ zaka₧d²m vyhodnoti¥ a vzor sa musφ znovu prelo₧i¥. Pok²m chcete toto obmedzi¥, pou₧ite modifikßtor /o, ktor² sp⌠sobφ ₧e VZOR sa prelo₧φ len raz.
Oerßtor nahradenia s/// mß nasl. zßkladn· syntax:
s/VZOR/NAHRAD/egimosx
Tento oerßtor v preh╛adßvanom re¥azci vyh╛adß re¥azec VZOR a nahradφ ho re¥azcom NAHRAD. Vrßti poΦet ·speÜn²ch nahradenφ (1, pri modifikßtore g to m⌠₧e by¥ aj viac) alebo hodnotu false pri ne·spechu. OpΣ¥ platφ to istΘ Φo pri operßtore porovnania - vkladanie premenn²ch do vzoru a nahradenia spoma╛uje nahradzovanie. Pok²m zvolφte ako odde╛ovaΦ znak ' (apostrof), vo VZORe ani v NAHRADenφ nebude vykonanΘ vlo₧enie premenn²ch.
Modifikßtor /e v operßtore nahradenia sp⌠sobφ, ₧e nahradzovacia Φas¥ (NAHRAD) bude vyhodnotenß ako v²raz, nie ako re¥azec.
Prφkaz nahradenia tr///
Ako som u₧ v ·vode spomenul, aj ke∩ rovnako vyzerß a pou₧φva sa, prφkaz nahradenia tr/// nie je v skutoΦnosti reg. v²razom. Jeho zßkladnß syntax je nasledovnß:
tr/ZOZNAMPREHLADANIA/ZOZNAMNAHRADENIA/cds
y/ZOZNAMPREHLADANIA/ZOZNAMNAHRADENIA/cds
Tento prφkaz prechßdza preh╛adßvan² re¥azec znak po znaku a vÜetky v²skyty znakov, ktorΘ s· obsiahnutΘ v ZOZNAMPREHLADANIA nahradφ zodpovedaj·cim znakom zo ZOZNAMNAHRADENIA. Vrßti poΦet nahraden²ch znakov.
Modifikßtor
|
V²znam
|
c
|
Doplnok k ZOZNAMPREHLADANIA
|
c
|
NßjdenΘ nenahradzovanΘ znaky vyma₧e
|
s
|
Zrazenie viacnßsobne nahraden²ch znakov
|
Pok²m je pou₧it² modifikßtor /c , bud· nahradenΘ vÜetky znaky, ktorΘ nie s· obsiahnutΘ v ZOZNAMPREHLADANIA. SkutoΦn² ZOZNAMPREHLADANIA je teda doplnkom k zadanΘmu.
Pri pou₧itφ modifikßtoru /d bud· vÜetky znaky zo ZOZNAMPREHLADANIA, ktorΘ nemaj· uveden² v ZOZNAMNAHRADENIA svoj ekvivalent, vymazanΘ. Pok²m toti₧ pou₧ijete prφkaz tr/// v ktorom je ZOZNAMPREHLADANIA kratÜφ ako ZOZNAMNAHRADENIA, bude posledn² znak zo ZOZNAMNAHRADENIA opakovan² tak dlho, k²m ZOZNAMNAHRADENIA nebude ma¥ rovnak· dσ₧ku ako ZOZNAMPREHLADANIA. Napr. pri prφkaze tr/ABC/ab/ bude pφsmeno "C" nahradenΘ pφsmenom "b".
Ak je uveden² modifikßtor /s , postupnosti znakov, ktorΘ maj· by¥ nahradenΘ rovnak²m znakom zo ZOZNAMNAHRADENIA s· nahradenΘ jedin²m t²mto znakom.
Prφkaz split
Posledn²m zo zßkladnej skupiny prφkazov vyu₧φvaj·cich perlovskΘ regulßrne v²razy je prφkaz split . Jeho zßkladnß syntax je nasledovnß:
split /VZOR/, V▌RAZ, LIMIT
split /VZOR/, V▌RAZ
split /VZOR/
split
Tento vo V▌RAZe h╛adß rozde╛ovacie znaky a v ich miestach V▌RAZ rozde╛uje na podre¥azce, ktorΘ vrßti ako zoznam. OddelovaΦe s· urΦenΘ opakovan²m preh╛adßvanφm V▌RAZu na v²skyt re¥azca VZOR (VZOR je teda chßpan² ako oddelovaΦ).
Pok²m je pou₧it² parameter LIMIT, split rozdelφ V▌RAZ na max. LIMIT podre¥azcov.
Pok²m nie je Üpecifikovan² V▌RAZ, bude preh╛adan² a rozdelen² obsah premennej $_. Ak je vynechan² aj VZOR, bude vykonanΘ rozdelenie v miestach vÜetk²ch prßzdnych znakov okrem t²ch, ktorΘ sa nachßdzaj· na zaΦiatku re¥azca.
To by bolo o reg. v²razoch v Perli vÜetko, nabud·ce sa pozrieme Server Side Includes (SSI).
|
|
|