InterMatrix

Reguláris kifejezések referenciája röviden

Reguláris kifejezések a szövegek, adatok feldolgozására, minták alapján részhalmazok keresésére.

(Frissítve: 2011-01-04 15:14)

A reguláris kifejezés, egy szintaktikai szabályok szerint leírt minta, amely segítségével szövegek, adatok feldolgozásakor, egyező részhalmazok kereshetőek ki – karaktereket, számokat és helyettesítő karaktereket tartalmaz. Először Unixon kezdték használni, rendkívüli hatékonyságának köszönhetően mára szinte mindenik programozási nyelvbe beépítették. A reguláris kifejezéseket a legtöbb programnyelv esetenként eltérő saját beépített függvényekkel támogatja.

Megemlítendő, a különféle szabványoknak az ASCII kódoláson kívül eső betűk mostoha kezelése. Gyakori probléma például, egy több byte-os karakter (pl.: ékezetes betű) illeszkedése a mintában, az ékezetes szavak ábécé szerinti rendezése. Hogyha a kifejezésben a karakterlánc hossza is feltétel, a számlálás byte-onként balra tolódik, így az elvárástól eltérő eredményre lehet számítani. A Perl-stílusú reguláris kifejezések képesek az UTF–8 szövegek kezelésére.

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-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 ú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

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

Egyéb internetes források

LAMP szerver
(Frissítve: 2011-07-03 12:38)
Linux Apache MySQL PHP

A legtöbb tárhelyszolgáltató UNIX (Linux) alapú szervert működtet, éppen ezért érdemes minél jobban megismerni. Jól működő weboldalak elengedhetetlen kelléke, a fejlesztőgépen való tesztelés lehetősége, asztali…

VirtualHostok
(Frissítve: 2012-01-28 09:12)
Linux Apache Virtual Host

A teszt szerver kialakítása cikk alapján, remélhetőleg egy működő HTTP kiszolgáló rendszert hoztunk létre. A rendszer, ugyan működik, de sok mindenre ebben a formában még nem alkalmas, nehezen kezelhető. Gondoljunk csak…

phpMyAdmin
(Frissítve: 2010-04-12 12:07)
phpMyAdmin

A phpMyAdmin, MySQL adatbázisok internetes menedzselésére PHP nyelven írt grafikus felületű eszköz, mely támogatja a leggyakrabban használt adatbázis műveleteket: adatbázisok kezelése, táblázatok, mezők, kapcsolatok, indexek,…

Apache biztonság
(Frissítve: 2011-06-03 08:14)

Amint egy bármilyen számítógép internetes hálózatra kapcsolódik mindig fenn áll a veszélye, hogy valaki(k) adatokat próbálnak megszerezni, vagy még ezen is túl, megszerezni a számítógép irányítását. Példának okáért az…

.htaccess védekezés
(Frissítve: 2011-10-05 22:55)

A webszerverek különböző sorszámú kódokat küldenek a HTTP munkameneteknek, amelyek naplózási adatokból visszakövethetőek és biztonságtechnikailag felhasználhatóak. Egy részük a fellépő hibákra utalnak, míg más részük a…

PHP–MySQL statisztika
(Frissítve: 2012-02-02 13:52)
Operációs rendszerek megoszlása

Bármely web-oldal életképességének sikere megköveteli a folyamatosan változó látogatói tendenciák követését, a kliensektől érkező információk olyan elemzését, amely konstruktívabb következtetések levonására képeznek…