150 likes | 300 Views
Regulární výrazy. Regulérní výrazy se používají k popsání vzoru uvnitř textu. Například řetězec "škola" odpovídá regulárnímu výrazu "škola", ale také "škol", "kol" a pod. V regulárním výrazu můžeme použít speciální znaky, které nám pomohou popsat vlastnosti hledaného výrazu.
E N D
Regulární výrazy • Regulérní výrazy se používají k popsání vzoru uvnitř textu. • Například řetězec "škola" odpovídá regulárnímu výrazu "škola", ale také "škol", "kol" a pod. • V regulárním výrazu můžeme použít speciální znaky, které nám pomohou popsat vlastnosti hledaného výrazu.
Množiny a třídy znaků Tečka nahradí libovolný znak. Např.: ti. - vrátí jako platný řetězec "tis", "tim", "tik"... [a-z] - množina povolených znaků [aeiouy] - množina povolených znaků [a-zA-Z] - množina povolených znaků (velká i malá písmena [^a-z] - množina nepovolených znaků V regulárním výrazu můžeme použít symboly * a +. Symboly se umísťují za výraz. [a-z]+ - nejméně jeden znak z povolených znaků
Předdefinované třídy znaků [[:alnum:]] - čísla [[:alpha:]] - písmena [[:lower:]] - malé znaky [[:upper:]] - velké znaky [[:digit:]] - desítková čísla [[:xdigit:]] - šestnáctková čísla [[:punct:]] - iterpunkce [[:print:]] - všechny tisknutelné znaky [[:graph:]] - všechny tisknutelné znaky s výjimkou mezer [[:blank:]] - tabulátory a mezery [[:space:]] - prázdné znaky [[:cntrl:]] - řídící znaky
Přiřazení počátku a konce řetězce • Symbol stříšky (^) se používá na počátku regulárního výrazu a říká, že se daný výraz musí nalézat na začátku řetězce. • Symbol $ se používá na konci regulárního výrazu a říká, že se daný výraz musí nalézat na konci řetězce. ^blabík - znamená, že se "blabík" bude vyskytovat na začátku řetězce com$ - znamená, že se "com" bude vyskytovat na konci řetězce
Příklad Chceme zjistit, zda je zadaná e-mailová adresa ve správném tvaru a korektní. jméno@doména.národní_doména jméno - může obsahovat velká i malá písmena, číslice a podtržítko, tečku, pomlčku, minimálně jeden znak @ - povinný znak doména - může obsahovat velká i malá písmena, číslice a pomlčku, minimálně jeden znak . - povinný znak národní_doména - může obsahovat velká i malá písmena, tečku, minimálně 2 až 4 znaky
Řešení ^[a-zA-Z0-9\._\-]+@[a-zA-Z0-9\.\-]+\.[a-zA-Z\.]{2,4} Pomlčka a tečka musí být "ocejchovaná" obráceným lomítkem, aby nebyla chápána například jako spojovník.
Vyhledávání řetězce pomocí regulárních výrazů ereg(podřetězec, řetězec, pole) - prochází řetězec a pátrá po zadaném podřetězci. Nalezený řetězec se může uložit do pole eregi(podřetězec, řetězec, pole) - nerozlišuje velikost písmen mb_ereg(podřetězec, řetězec, pole, "utf-8") - prochází řetězec a pátrá po zadaném podřetězci – pro kódování UTF-8 mb_eregi(podřetězec, řetězec, pole, "utf-8") - nerozlišuje velikost písmen – pro kódování UTF-8
Příklad Otestujte e-mailovou adresu zda je platná. blabolil@sosvaz.cz
Řešení <? $email = "blabolil@sosvaz.cz"; if (eregi("^[a-zA-Z0-9\._\-]+@[a-zA-Z0-9\.\-]+\.[a-zA-Z\.]{2,4}", $email)) { echo "Adresa ". $email. " je platná"; exit; } echo "Adresa ". $email. " není platná. Zadejte ji znovu"; ?>
Otázky k opakování • Co jsou to regulární výrazy? • Jakou funkci má v regulárním výrazu znak ^? • Jakou funkci má v regulárním výrazu znak +? • Jakou funkci má v regulárním výrazu znak $? • Co znamená zápis [a-zA-Z]? • Jaká funkce se používá pro vyhledávání řetězce pomocí regulárních výrazů?
Použité zdroje • BLÁBOLIL, R. Informační a komunikační technologie. 3. rozšířené vydání. České Budějovice: KOPP, 2011. str. 407 Použité obrázky: • Vlastní