Hlavnß strßnka · DiskusnΘ F≤rum · PracovnΘ prφle₧itosti · Zoznam

 Main Menu
o Hlavnß strßnka
o Zoznam tΘm
o Zoznam
o OdporuΦte nßs
o U₧φvatelia
o VaÜe konto
o Pridaj Φlßnok
o ètatistiky
o Top 10

 Reklama


 Developer Zone's
o Internet
o Tools
o Linux
o CGI Zone
o ASP Zone
o ASP.net
o PHP Zone
o CSS Zone
o JavaScript
o MySQL
o WAP / WML
o WML / WMLScript
o XML / XHTML
o Tipy a triky
o Best of web
o WebServers
o WebDesign
o Grafika

 Servis
o Vyh╛adßvanie
o F≤rum
o Workoffice
o Zoznam Φlßnkov
o Reklama
o Pridaj Φlßnok
o Pridaj novinku

NapφÜte nßm
Homepage Do favoritov

 LinkExpres
Interval.cz · Pc.sk
Builder.cz · Mobilmania
PCSvet.cz · Asp.cz
Webdnes · Äiv∞.sk
Zoznam.sk · Atlas.sk
Inzine.sk · PHP.sk
Agent.sk · Lupa.cz
Code.box.sk · Root.cz
Pixel32 · Grafika.cz

 forum.developer.sk
o F≤rum ::
o Markup languages
o ScriptovΘ jazyky
o CGI
o PHP/MySQL
o Perl
o Grafika
o Webservery
o HTML Editory
o Browsery
o Bookmarx
o ASP
o Vytvor tΘmu ::

 PracovnΘ prφle₧itosti
o Pon·kate prßcu?
o H╛adßte prßcu?

 Autori developer.sk
o Martin NemeΦek
o SvΣ¥o Straka
o Jany Masaryk
o Jozef Murφn

 
CGI / Perl [ 30. December 1999] - Svato_Straka
Regulßrne v²razy v Perli - 6. Φas¥ CGI
Ako som u₧ minule s╛·bil, dneÜnß Φas¥ nßÜho rozprßvania o CGI sa bude venova¥ Perlu, najpou₧φvanejÜiemu jazyku pre tvorbu CGI aplikßciφ.



Nie vÜak Perlu celkovo, ale povieme si nieΦo o regulßrnych v²razoch, ktorΘ dßvaj· Perlu obrovsk· silu pri spracovßvanφ textov²ch dßt.

Regulßrne v²razy (preklad z anglickΘho regular expressions, niekedy sa pou₧φva aj skratka regexp) s· zrejme znßme vÜetk²m u₧φvate╛om Linuxu. PerlovskΘ reg. v²razy s· ve╛mi podobnΘ t²m, ktorΘ pou₧φva aj program egrep. Aj ke∩ sa vßm m⌠₧u zda¥ regulßrne v²razy ako nepreh╛adnß sple¥ znakov, ke∩ ich pochopφte a pochopφte aj sp⌠sob ich interpretovania jazykom Perl, zφskate pravdepodobne najsilnejÜφ nßstroj na prßcu s textom, s ak²m ste kedy mohli pracova¥.

Regulßrne v²razy vlastne vykonßvaj· porovnßvanie re¥azca so zadan²m vzorom. Ak je vzor v re¥azci nßjden², mßte nieko╛ko mo₧nostφ, ako v²sledok takΘhoto porovnßvania vyu₧i¥. Pri be₧nom porovnßvanφ vßs zaujφma, Φi re¥azec obsahuje vzor. Ak ßno, regexp vßm vrßti pravdiv· hodnotu a vy m⌠₧ete vykona¥ urΦit² blok prφkazov. Ak pou₧ijete pri porovnßvanφ prφkaz nahradenia, pri nßjdenφ vzoru sa zamenφ postupnos¥ vyh╛adßvan²ch znakov za in² vami urΦen² re¥azec. Poslednou mo₧nos¥ou porovnßvania je prφkaz split, s ktor²m ste sa mohli stretn·¥ v predchßdzaj·cej Φasti nßÜho serißlu o CGI. Tento vrßti po porovnanφ vÜetky miesta, s ktor²mi sa vzor nezhoduje.

V zßsade platφ, ₧e vΣΦÜina znakov v regulßrnych v²razov sa zhoduje sama so sebou. Pok²m v reg. v²raze uvediete viac znakov za sebou, tieto sa musia zhodova¥ presne v danom poradφ. To znamenß, ₧e ak uvediete napr. reg. v²raz
/ahoj/
bude sa zhodova¥ len vtedy, ak dan² re¥azec bude obsahova¥ podre¥azec "ahoj". OstatnΘ znaky s· metaznaky a samy so sebou sa nezhoduj·. Ak chcete v porvnßvanφ pou₧i¥ aj zhodu na nejak² znak, ktor² je metaznakom, musφte pred nφm uvies¥ znak "" (obrßtenΘ lomφtko). Tu je zoznam metaznakov:
 | ( ) [ { ^ $ * + ? .

Ako som u₧ spomenul, obrßtenΘ lomφtko menφ metaznak na obyΦajn² znak (znakov² literßl). Pok²m teda chcete pou₧i¥ obrßtenΘ lomφtko ako znakov² literßl, musφte pou₧i¥ postupnos¥ znakov \. Ak vÜak pou₧ijete obrßtenΘ lomφtko pred znakov²m literßlom, bude tento zmenen² na metaznak alebo nejak² druh postupnosti.

╧alÜou vecou, s ktorou sa m⌠₧ete pri reg. v²razoch stretn·¥, s· kvantifikßtory. Tieto urΦuj·, ko╛kokrßt po sebe sa musφ zadan² vzor zhodova¥. Kvantifikßtory sa vÜak via₧u v₧dy len na znak, za ktor²m nasleduj·, ak chcete kvantifikova¥ vzor obsahuj·ci viac znakov, musφte tieto zoskupi¥ pomocou zßtvoriek:
/(ahoj){2}/
Φo vyvolß zhodu v prφpade, ak porovnßvan² re¥azec bude obsahova¥ podre¥azec "ahojahoj". Naproti tomu:
/ahoj{2}/
sa bude zhodova¥ s "ahojj". V nasleduj·cej tabu╛ke s· uvedenΘ pou₧φvanΘ kvantifikßtory:

Ke∩₧e s· vzory porovnßvanΘ ako re¥azce v ·vodzovkßch, funguje aj v regulßrnych v²razoch vkladanie premenn²ch. Ak teda
$foo = "ahoj";
zhodu sp⌠sobφ
/$foo/ aj /ahoj/
Vkladanie premenn²ch vÜak sp⌠sobuje spomalenie porovnßvania, preto₧e premennß sa m⌠₧e meni¥ (ve∩ od toho je premennß) a vzor musφ by¥ zaka₧d²m znovu prelo₧en². AvÜak pozor, kedyko╛vek je znak "$" nasledovan² znakom pipe (zvislß Φiara), uzatvßracou gu╛atou zßtvorkou alebo koncom re¥azca, bude interpretovan² ako koniec riadku, nie ako vkladanie premennej.

Ke∩₧e je problematika regulßrnych v²razov pomerne obsiahla, nabud·ce budeme pokraΦova¥ a povieme si Φosi o pravidlßch porovnßvania regulßrnych v²razov.

 
 PrφsluÜnΘ odkazy k tΘme
Viac o tΘme: CGI / Perl | InΘ Φlßnky od: Admin | PoÜli komentßr | Strßnka vhodnß na tlaΦ width=15 height=11  PoÜli tento Φlßnok priate╛ovi, znßmemu width=15 height=11


NajΦφtanejÜie Φlßnky CGI / Perl:
╚o je to CGI? - ┌vod do CGI

╧alÜie Φlßnky v rubrike CGI / Perl:

 

"Regulßrne v²razy v Perli - 6. Φas¥ CGI" | Login / vytvor konto | 0 Komentßrov
Prah
Za obsah komentßrov je zodpovedn² u₧φvate╛, nie prevßdzkovate╛ t²chto strßnok.



AutorskΘ prßva: á ⌐1999 - 2001 Developer Zone [developer@developer.sk]

VÜetky Φlßnky s· vlastnφctvom autorov Developer Zone. VÜetky prßva vyhradenΘ. Strßnky Developer.sk s· vytvorenΘ pomocou PHP-Nuke.
Odkazy na novΘ Φlßnky je mo₧nΘ prebera¥ pomocou:Backend.php.