Reguláris kifejezések, avagy illesztési minták kezelése

Reguláris kifejezések, avagy illesztési minták kezelése

Reguláris kifejezések, avagy illesztési minták kezelése

A reguláris kifejezésekkel illeszkedési mintákat hozhatunk létre, melyekkel karakterláncokban tudunk keresni. Az ilyen kifejezés valamilyen minta szerinti szöveg keresésére, cseréjére, illetve a szöveges adatok ellenőrzésére használható.

PHP


<?php
$string = 'abcABC123';
//kiválogatja az összes karaktert a-tól z-ig és kitörli ezeket a karaktereket a $string karakterláncból
$string = preg_replace('/[a-zA-Z]/','',$string); //123
?>

Metakarakterek (Metacharacters)

\ (escape karakter) – az utána következő metakarakterre illeszkedik pl.: "\*" csillag karakterre, "\\" visszaperjelre
. (pont) – bármely, kivéve az új sor karakter
^ (kalap jel) – a minta kezdete
$ (dollár jel) – a minta vége
| (pipa) – logikai elágazás, előtte vagy utána levő kifejezés
[] (szögletes zárójel) – karakter osztály, a szögletes zárójelek közötti karakterek valamelyikeire bármilyen sorrendben illeszkedik
() (kerek zárójel) – csoportosítás, a kerek zárójelek közötti karakterekre pontos sorrendben illeszkedik
[^ab@] (tagadás a karakter osztályban) – bármi, kivéve a, b vagy @
[0-9] (karakter osztály tartomány) – 0 és 9 közötti számokra illeszkedik
[a-zA-Z] (karakter osztály tartomány) – ASCII kis és nagy betűkre illeszkedik a-tól z-ig

Ismétlések (Quantifiers)

* (csillag) – a minta 0 vagy többszöri ismétlése
+ (plusz) – a minta 1 vagy többszöri ismétlése
? (kérdőjel) – a minta 0 vagy egyszeri ismétlése
{3} (intervallum) – a mintában pontosan három karakter lehet
{3,} (intervallum) – a mintában legalább három vagy több karakter lehet
{,3} (intervallum) – a mintában legfeljebb három karakter lehet
{1,4} (intervallum) – a mintában legalább egy, legfeljebb négy karakter lehet

Ismétlések lomhán (Quantifiers not greedily)

*? (csillag és kérdőjel) – a minta 0 vagy többszöri ismétlése (lomhán)
+? (plusz és kérdőjel) – a minta 1 vagy többszöri ismétlése (lomhán)
?? (kérdőjel és kérdőjel) – a minta 0 vagy egyszeri ismétlése (lomhán)
{3}? (intervallum és kérdőjel) – a mintában pontosan három karakter lehet (lomhán)
{3,}? (intervallum és kérdőjel) – a mintában legalább három vagy több karakter lehet (lomhán)
{,3}? (intervallum és kérdőjel) – a mintában legfeljebb három karakter lehet (lomhán)
{1,4}? (intervallum és kérdőjel) – a mintában legalább egy, legfeljebb négy karakter lehet (lomhán)

Ismétlések visszatérés nélkül (Quantifiers give nothing back)

*+ (csillag és plusz) – a minta 0 vagy többszöri ismétlése (visszatérés nélkül)
++ (plusz és plusz) – a minta 1 vagy többszöri ismétlése (visszatérés nélkül)
?+ (kérdőjel és plusz) – a minta 0 vagy egyszeri ismétlése (visszatérés nélkül)
{3}+ (intervallum és plusz) – a mintában pontosan három karakter lehet (visszatérés nélkül)
{3,}+ (intervallum és plusz) – a mintában legalább három vagy több karakter lehet (visszatérés nélkül)
{,3}+ (intervallum és plusz) – a mintában legfeljebb három karakter lehet (visszatérés nélkül
{1,4}+ (intervallum és plusz) – a mintában legalább egy, legfeljebb négy karakter lehet (visszatérés nélkül)

Escape-szekvenciák (Escape sequences)

\t (HT, TAB) – tabulátor
\v (VT, TAB) – vertikális tabulátor
\n (LF, NL) – új sor
\r (CR) – kocsi vissza
\a (BEL) – csengő
\f (FF) – lapdobás
\e (ESC) – escape

Általános karakter osztályok (Generic Character Classes)

\d decimális szám
\D nem decimális szám, minden más
\s szóköz karakter
\S bármely más karakter a szóközön kívül
\w bármely szó
\W bármi, ami nem szó

Módosítók (Modifiers)

m (PCRE_MULTILINE) – a "^" és "$" közötti több soros karakterlánc kezelése, belső sorokra illeszkedik
i (PCRE_CASELESS) – kis és nagy betű érzékenység kikapcsolása
s (PCRE_DOTALL) – csak egy sorra illeszkedik
x (PCRE_EXTENDED) – szóközök és megjegyzések figyelmen kívül hagyása a mintában
e a preg_replace() csereláncát PHP-kódként kezeli
g minden előfordulásra illeszkedik
u (PCRE_UTF8) – a mintát UTF–8 kódolású szövegnek tekinti
A csak a karakterlánc elején illeszkedik (PHP)
E csak a karakterlánc végén illeszkedik (PHP)
U a legkevesebb karaktert tartalmazó találatokat adja vissza (PHP)

Feltételek (Assertions)

\b szóhatár
\B bármi, kivéve szóhatár
\A csak a karakterlánc elején egyezik
\Z csak a karakterlánc vagy újsor végén egyezik
\z csak a karakterlánc végén egyezik

Másodlagos feltételek (Subassertions)

(?:bab) (nem emlékező zárójel) – illeszkedik a bab-ra, de nem emlékezik az illesztésre
bab(?=szem) illeszkedik a bab-ra, ha azt a szem követi
bab(?!szem) illeszkedik a bab-ra, ha azt nem a szem követi
(?#ez itt egy megjegyzés) (megjegyzés)
(?>\d+)bab teljesítmény növelés, ha a bab hiányzik
(?(3)bab|szem)jankó illeszkedik a bab-ra, ha a harmadik rész egyezik, különben a szem-re

Posix, Unicode, Perl, ASCII karakter osztályok

Posix Unicode Perl ASCII
betűk és számok
[:alnum:] \p{IsAlnum} [a-zA-Z0-9]
betűk
[:alpha:] \p{IsAlpha} [a-zA-Z]
0 és 127 kódok közötti karakterek
[:ascii:] \p{IsASCII}
szóköz vagy tabulátor
[:blank:] [ \t]
ellenőrző karakterek
[:cntrl:] \p{IsCntrl} [\x00-\x1F\x7F]
decimális számok
[:digit:] \p{IsDigit} \d [0-9]
nem decimális számok
\D [^0-9]
nyomtatható karakterek, kivéve szóköz
[:graph:] \p{IsGraph} [\x21-\x7E]
nyomtatható karakterek és szóköz
[:print:] \p{IsPrint} [\x20-\x7E]
nyomtatható karakterek, kivéve betűk és számok
[:punct:] \p{IsPunct} [-!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~]
szóköz
[:space:] \p{IsSpace} \s [ \t\r\n\v\f]
szóköz (perl)
\p{IsSpacePerl} \s
nem szóköz
\S [^\s]
szó
[:word:] \p{IsWord} \w [A-Za-z0-9_]
nem szó
\W [^\w]
hexadecimális szám
[:xdigit:] \p{IsXDigit} [A-Fa-f0-9]
kisbetűk
[:lower:] \p{IsLower} [a-z]
nagybetűk
[:upper:] \p{IsUpper} [A-Z]

PHP reguláris kifejezések függvényei

A PHP a reguláris kifejezések két fajtáját támogatja, a POSIX- és a Perl-kompatibiliseket.

POSIX függvények

A PHP az 5.3.0 verzió bevezetésével a POSIX függvényekre „Deprecated: Function ereg() is deprecated…” elavultságot jelző hibaüzenetet ad! A kódot Perl-kompatibilissá kell konvertálni.

ereg() egyezés vizsgálata
eregi() egyezés vizsgálata (kis és nagy betű érzéketlen)
ereg_replace() az egyezést a megadott szóra cseréli
eregi_replace() az egyezést a megadott szóra cseréli (kis és nagy betű érzéketlen)
split() az egyezés alapján a karakterláncot tömb elemekre darabolja
spliti() az egyezés alapján a karakterláncot tömb elemekre darabolja (kis és nagy betű érzéketlen)

Perl-kompatibilis függvények

preg_filter keresés és csere
preg_match() egyezés vizsgálata
preg_match_all() egyezés vizsgálata globálisan (az első egyezés után folytatja a keresést)
preg_replace() az egyezést a megadott szóra cseréli
preg_replace_callback() az egyezést a megadott függvényt meghívásával cseréli
preg_split() az egyezés alapján a karakterláncot tömb elemekre darabolja
preg_quote() az egyezés metakaraktereit literálissá változtatja
preg_grep() visszaadja azokat a tömbelemeket, amelyek illeszkednek a mintára
Leírásaink azon kezdő és haladó programozóknak nyújtanak segítséget, akik már minimális szinten foglalkoztak weboldalkészítéssel. Ha szeretnél jobban elmélyülni a témában, vagy elsajátítani alapokat, még tovább fejlődni, akkor nézz körbe tanfolyam kínálatunkban, ahol a kezdőtől a profi szintig nyújtunk képzéseket a számodra.

Oszd meg barátaiddal is!

Facebook Twitter Linkedin

Elérhetőségeink

  • Címünk: 1139 Budapest, Frangepán utca 3. (1. emelet)

  • Ügyfélfogadás, beiratkozás: Hétfőtől - péntekig: 09:00-17:00

  • Telefonszámunk: 06 70 604 2060, vagy 06 1 4500 110

  • E-mail címünk:

Közösségünk