Reguláris kifejezés
A reguláris kifejezés (angolul regular expression) egy olyan, bizonyos szintaktikai szabályok szerint leírt string, amivel meghatározható stringek egy halmaza. Nevének rövidítésére gyakran a regexp vagy regex kifejezés használatos.
A reguláris kifejezéseket sok szövegszerkesztő, illetve segédprogram használja, főleg szövegek keresésekor vagy szövegek bizonyos minták szerinti kezelésekor.
A reguláris kifejezéseket a jelsorozatokkal, stringekkel való műveleteknél több programozási nyelv is használja, illetve támogatja. Például a Perl és a Tcl is rendelkezik direkt reguláris kifejezések elemzésére szolgáló szintaktikai elemzővel. A különböző Unix disztribúciókban lévő segédprogramok jelentős része (beleértve a sed szövegszerkesztőt és a grep szűrőt) támogatta először a reguláris kifejezések használatát.
A gyakran mintának nevezett reguláris kifejezés a jelsorozatok, stringek egy halmazát határozza meg. A minták használatával tömören megadhatók halmazok leírásai annélkül, hogy az összes elemüket fel kellene sorolni. Tegyük fel például, hogy egy halmaz a következő jelsorozatokat tartalmazza: Handel, Händel, és Haendel. Leírhatók-e a halmaz elemei a H(ä|ae?)ndel mintával (más szavakkal: mondhatjuk-e, hogy a mintához mindhárom string illeszkedik)? Amint az a későbbiekből kiderül, általában azonos halmazok különböző mintákkal is leírhatóak.
A legtöbb formalizálásnál a következő operátorok használatával konstruálhatók meg a megfelelő reguláris kifejezések.
választás
A függőleges vonal (|) a lehetséges alternatívákat választja el. Például a „kap|kép” minta alternatívákhoz illeszkedik a kap vagy a kép jelsorozat is.
csoportosítás
Zárójelek az operátorok hatáskörének elsőbbségének meghatározására szolgálnak. Például, a kap|kép és k(a|é)p minták különbözőek, de ugynazok a jelsorozatok illeszkednek hozzájuk (kap és kép).
mennyiség jelzés
A mennyiség jelző egy karakter, vagy csoport után azt határozza meg, hogy hányszor fordulhat elő a megelőző kifejezés. A leggyakoribb mennyiség jelzők a ?, a * és a +:
?
A kérdőjel jelzi, hogy a megelőző kifejezés csak 0 vagy 1 esetben fordulhat elő. Például, a colou?r minta összeillik a color és a colour jelsorozatok közül bármelyikkel.
*
A csillag jelzi, hogy a megelőző kifejezés akárhány esetben fordulhat elő (beleértve a nullát is). Például, go*gle mintával összeillik a ggle, a gogle, a google stb. Nagyon fontos, hogy a * értelmezése alapvetően eltér a Windows-beli megszokott értelmezéstől!
+
A plusz karakter jelzi, hogy a megelőző kifejezés legalább 1 esetben fordulhat elő. Például a go+gle mintához illeszkedik a gogle, google stb. (de a ggle nem!).
A fenti konstrukciók egymással kombinálva a különféle formák komplex ellenőrzését teszik lehetővé.
Tehát a H(ae?|ä)ndel és a H(a|ae|ä)ndel érvényes, szabályos minták, és ezen túlmenően, mindkettőhöz illeszkednek a előző példaként megadott jelsorozatok.
Másik példa a előzőekben leírt operátorok kínálta lehetőségek kihasználásra:
Legyen a minta a következő:
(nagy ?)*(apa|anya)
A mintához illeszkedik a következő stringek közül bármelyik: apa, anya, nagy apa, nagy anya, nagy nagy apa, nagy nagy anya, nagyapa, nagyanya, nagy nagyapa, nagy nagyanya, nagy nagy nagyapa, nagy nagy nagyanya és így tovább.
A reguláris kifejezések pontos szintaxisa a változó eszközök és alkalmazások miatt egységesen nem adható meg; a további részleteket lásd a Szintaxis résznél.