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.