Szabványok

Reguláris kifejezések

A szövegben történő keresés igen gyakori, alapvető műveletnek számít. Az alapértelmezett keresés (adott töredék keresése a szövegben) gyakran szűknek bizonyul: pl. olyat is meg szeretnénk adni, hogy a sor elején található a szöveg, vagy "lazítani" szeretnénk a feltételeken: tudjuk pl. a szöveg elejét és végét, de a közepe bármi lehet. Vagy egyszerre szeretnénk rákeresni arra, hogy Händel és arra, hogy Haendel. E problémák megoldásaként jelentek meg a reguláris kifejezések (regular expression).

Sajnos nincs mindenki által egységesen elfogadott reguláris kifejezés szabvány, kisebb-nagyobb eltérések vannak. Itt a legfontosabb szabályokat sorolom fel:

  • A reguláris kifejezés felülről kompatibilis a "normál" kereséssel. Ez azt is jelenti, hogy az adott karakterek saját magukra illeszkednek. Pl. ha a "hello" reguláris kifejezésre keresünk rá egy szövegben, akkor pont azt fogja visszaadni eredményül, amit várunk.
  • .: ez tetszőleges karakterre illeszkedik. Pl. a "h.ll." illeszkedik a következőkre: hello, halló, hulló, holló stb.
  • []: szögletes zárójelben sorolhatjuk fel azt, hogy milyen karakterre illeszkedhet. Pl. "h[aou]lló" illeszkedik arra, hogy halló, holló és hulló, de pl. arra nem, hogy helló. Itt szakaszt is megadhatunk, pl. az [a-z] az angol ábécé tetszőleges kisbetűjére illeszkedik.
  • [^]: ha a szögletes zárójelben az első karakter ez: ^, akkor azzal pont azokat soroljuk fel, amire nem illeszkedik. Pl. a "h[^aou]lló" illeszkedik arra, hogy helló, hklló vagy h&lló, de arra nem, hogy hulló.
  • ^ és $: a sor elejére és a sor végére illeszkedik. Pl. az, hogy "^alma$" csak arra a sorra illeszkedik, amely semmi mást nem tartalmaz, csak azt, hogy alma.
  • *, ? és +: ez az előző karakterre vonatkozik, és azt jelezzük, hogy akárhányszor előfordulhat (pl. "ab*c"-re illeszkedik az ac, az abc és az abbbbc is), legfeljebb egyszer fordulhat elő (az "ab?c"-re illeszkedik az ac és az abc, de az abbbc nem), ill. legalább egyszer forduljon elő (pl. az "ab+c"-re illeszkedik az abc és az abbbc is, de az ac nem). A * karaktert sok esetben joker karakternek hívjuk, ami mindenre illeszkedik. A szigorú reguláris kifejezés szerint viszont önmagában helytelen a használata (noha a rendszerek többsége megengedi); ha azt szeretnénk kifejezni, hogy bármire illeszkedjen, akkor valójában a ".*" kifejezést kellene használnunk.
  • {n}, {min,} és {min,max}: kapcsos zárójelben megadhatjuk azt, hogy az előző karakter pontosan, legalább ill. adott intervallumon belül hányszor fordulhat elő. Pl. az "ab{2,4}c" illeszkedik arra, hogy abbbc, de nem illeszkedik az abc-re vagy az abbbbbc-re.
  • (): zárójelbe helyezhetünk egy alkifejezést, és a következő utasítás nem egyetlen karakterre vonatkozik, hanem a teljes zárójelre. Pl. a "(hello){3}" a következőre illeszkedik: hellohellohello.
  • |: logikai kizáró vagy. Pl. a "H(ä|ae)ndel" a következőkre illeszkedik: Händel és Haendel.
  • \: ez az ún. escape karakter, segítségével olyan kifejezést adhatunk meg, amit nomrál billentyűzettel nem tudunk begépelni, mert mást jelentene. Példák:
    • \n: új sor
    • \r: kocsi vissza (a Windows-on megelőzi a \n-t, más rendszereken a \n implicit magában foglalja a \r-t is)
    • \t: tabulátor
    • \xnn: az nn a karakter ASCII kódja, hexadecimális formában. Pl. ha valaki a csengetésre szeretne rákeresni, akkor a \x07-et kell beírnia.

Számos kisebb-nagyobb egyéb, egyedi megoldás létezik még, pl. a Java-ban a \p{Alnum} az alfanumerikus karakterekre illeszkedik. Az angol nyelvű Wikipédia szócikk igen jól összefoglalja a lehetőségeket: https://en.wikipedia.org/wiki/Regular_expression.

Crontab

XML

XPath

JSON

JSONPath

ASN.1

CSV

Dátum

yyyy-MM-dd

Szám formázás

(Excel)

Üzenetküldés

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License