Informatika1-2015/Gyakorlat3
A MathWikiből
A lap korábbi változatát látod, amilyen Nyida (vitalap | szerkesztései) 2015. szeptember 20., 14:16-kor történt szerkesztése után volt.
Tartalomjegyzék |
Reguláris kifejezések
A reguláris kifejezéseket akkor használjuk, amikor összetettebb karaktersort keresünk egy szövegben, illetve ilyen karakterláncokat szeretnénk helyettesíteni. Az órán a https://regex101.com/#python oldalon fogjuk kipróbálni, hogy mi hogyan működik.
- Speciális karakterek: nem ismeri fel őket, más jelentésük van, csak \ előkével tudunk rájuk keresni, pl \$, \^ stb.
. ^ $ * + ? { } [ ] \ | ( )
Karakterosztályok
Egyelőre egyetlen karakterre illesztünk.
- \d: tetszőleges számjegy, \D: tetszőleges karakter, ami nem számjegy.
- \w: tetszőleges alfanumerikus karakter, betű, szám vagy alulvonás (_), \W: tetszőleges, nem alfanumerikus karakter.
- \s: whitespace, azaz tab, sor vége, szóköz, \S tetszőleges, nem whitespace karakter.
- Mi is megadhatunk karakterosztályt: [xyz], vagy tilthatunk is, pl. [^xyz]. Előbbi az x,y,z karakterek bármelyikére illeszkedik, utóbbi bármilyen karakterre, ami nem x,y vagy z. Sőt, kötőjellel elválasztva intervallunként hivatkozhatunk a karakterekre, pl. [a-z] illeszkedik az összes kisbetűre, de az [A-Za-z0-9] is helyes, ez minden kis- és nagybetűre és számjegyre illeszkedik.
- ^: sor eleje, $, sor vége.
- A . minden karakterre illeszkedik.
Ismétlődések
Jelölés | Ismétlődések száma | Példa |
* | 0,1, vagy akármennyi | a \d* illeszkedik a '123' karakterekre, de az üres -re is |
+ | legalább 1 | \d+ Illeszkedik tetszőleges darab számjegyre |
? | 0 vagy 1 | oda\-?vissza illeszkedik az 'oda-vissza' és az 'odavissza' szavakra is |
{m,n} | Legalább m, legfeljebb n darab, bármelyik szám elhagyható | :D{4,10} nem illeszkedik a ':DDDDDDDDDDDDDD'-re |
Választás
- Bármilyen magánhangzóra illeszkedik a a|e|i|o|u kifejezés. Próbáljuk ki a GetValue|Get|Set|SetValue kifejezést. A SetValue szövegnél mire illeszkedik?
Csoportosítás
Lehetőségünk van csoportokat kijelölni a kifejezésen belül. Az alábbi példa olyan szövegre illeszkedik, amelyben kétszer ismétlődik bármi.
(.*)\1
Tudunk keresni html tageket is
<([A-Z][A-Z0-9]*)\b[^>]*>.*?</\1>
Több csoportot is tudunk kezelni, a nyitó zárójelek sorrendja határozza meg a csoport sorszámát. Cseréljük le az email cím domain nevét math.bme.hu-ra!
(\w+)@((\w+)\.)+(\w+)