Reguláris kifejezés (regexp)

http://intermatrix.hu/regexp

Metakarakterek (Metacharacters)

\	(escape karakter) – az utána következő metakarakterre illeszkedik pl.: \* csillag karakterre, \\ visszaper jelre
.	(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-6]	(karakter osztály tartomány) – 0 és 6 közötti számokra illeszkedik
[a-fA-F]	(karakter osztály tartomány) – ASCII kis és nagy betűkre illeszkedik a-tól f-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 új sor 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()	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()	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