2. Mi is az a 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.
3. Miért érdemes ismerni?
•Egyszerű nyelv, aminek segítségével szövegeket írhatunk le
•Néha egyszerűbb regexp-et használni, mint más metódusokat
•Nagyon gyors tud lenni
•Te lehetsz az, aki a többi programozót elriasztod, nem ők téged!
7. Meta karakterek
• ^ $ . [ ] | ( ) ? * + { }
•Ha ezekre a karakterekre illeszkedni akarunk, akkor escape-eljük
őket: “”, “$”
8. Karakter osztályok
. (pont) Minden karakter
[abc] a, b vagy c karakter
[a-c] Ugyanaz, mint a fenti, egy karakter halmaza
[^abc] Akármilyen karakter, kivéve a, b vagy c
[a-z&&[^aeiou]] Akármelyik betű a-tól z-ig, kivéve a magánhangzók
[a-Z] HIBÁS! Érvénytelen karakterosztály
9. Speciális karakterek
w “word” karakterek (locale függő!)
d számok
t n r tabulátor, sortörés és return karakterek
s whitespace = [tnvfr ]
b szó határoló
1 2 … 9
W D és a többi pont az ellenkezője a kisbetűsnek
10. Példa
This reveals that plain text is in fact the technical user's
way to regard a file or a sequence of bytes. In this sense,
there is no plain text.
/b[w&&[^aA]]+b/
/W{2,}w+b/
11. Példa
This reveals that plain text is in fact the technical user's
way to regard a file or a sequence of bytes. In this sense,
there is no plain text.
/b[w&&[^aA]]+b/
/W{2,}w+b/
12. Alapok
•A a string elejét
•Z a string vége, vagy sortörés előtti pozíció
•z a string vége
•A ^ jelöli a sor elejét
•A $ jelöli a sor végét
14. Példa
This reveals that plain text is in fact the technical user's
way to regard a file or a sequence of bytes. In this sense,
there is no plain text.
/reveal(.*)plain/
/reveal(.*?)plain/
/t.{2,3}t/
15. Példa
This reveals that plain text is in fact the technical user's
way to regard a file or a sequence of bytes. In this sense,
there is no plain text.
/reveal(.*)plain/
/reveal(.*?)plain/
/t.{2,3}t/
16. Példa
This reveals that plain text is in fact the technical user's
way to regard a file or a sequence of bytes. In this sense,
there is no plain text.
/reveal(.*)plain/
/reveal(.*?)plain/
/t.{2,3}t/
17. Példa
This reveals that plain text is in fact the technical user's
way to regard a file or a sequence of bytes. In this sense,
there is no plain text.
/reveal(.*)plain/
/reveal(.*?)plain/
/t.{2,3}t/
18. Alternatívok
a|b “a” vagy “b”
foo|bar “foo” vagy “bar”
foo|bar|baz “foo”, “bar” vagy “baz”
Egy kifejezésben a “|” a vagyot jelenti. Teljes kifejezéseket lehet rakni a két
oldalára, mindkettő illeszkedhet.
Példa:
/alma|mogyorok?/ illeszkedhet az “alma”, “mogyoro” és “mogyorok” szavakra.
19. Csoportosítás
(…)
Csoportosítja a tartalmat a zárójelekben.
Befolyásolja az alternatívokat és az ismétlőket.
Bekapcsolja az illeszkedő tartalom mentését.
be|kikapcsol “be” vagy “kikapcsol”
(be|ki)kapcsol “bekapcsol” vagy “kikapcsol”
(ha)+ illeszkedik a “ha”, “haha”, “hahaha”, … szavakra
Greg(ory)? “Greg” vagy “Gregory”
50. A spanyol viasz
Van jónéhány dolog, amire egyszerűen nem érdemes és nem is
lehet használni a regexp-et, ezért nem is érdemes!
•HTML validálás és feldolgozás – DOM kiterjesztés PHP alatt
•Form input-ok validálása – PHP Data Filtering
•Dátum validálás – strtotime()
•Amikor egy egyszerű szöveget keresünk – strpos(), str_replace()