RegEx alapok
flex programgenerátor
Regulárs nyelvek
- \(\emptyset,\;\{\varepsilon\},\;\{a\}\) ahol \(a\in V\)
- \(L\) akkor reguláris ha más reguláris nyelvek reguláris műveleteinek véges sokszori alkalmazásából előállítható
- \(L_1,\;L_2,\;L\in\mathcal{L}_\text{nyelv}\)
- \(L_1\cup L_2\quad L_1,\;L_2,\;L^*\)
- pl.: $ \big{{a}{b}\cup{b}{a}\big}^*$
Lexikális
- alapszavak
ifwhilethen
- azonosító
- prioritással az alapszavakhoz képest
- operátorok / műveletek
==++and
- konstansok
1233.14'A'"alma"
- elválasztó jelek
(),- fehér elválasztók
- pl.: space
Reguláris kifejezések
\(R_1,\;R_2\) reguláris kifejezések esetén
Note that, prioritás függvényében használadnó a zárójel
- Elemi kifejezések
- \(\emptyset,\;\varepsilon,\;a\) (ahol \(a\) egy betű)
- Unió
- \((R_1|R_2)\)
- Konkatenáció
- \((R_1R_2)\)
- Lezárás
- \((R)^*\)
Példa
\[
L=\big\{u\in\{a,b,c\}^*\;|\;\text{nincs két 'c' egymás mellet}\big\}
\]
\[ (a\,|\,b\,|\,ca\,|\,cb)^*(c\,|\,\varepsilon) \]
\[
L=\big\{u\in\{a,b\}^*\;|\;\ell_a(u)=2k+1,\;k\ge 0\big\}
\]
\[ b^*a(b^*ab^*ab^*)^* \]
Decimális egész számok
0|([\-]?[1-9][0-9]*)
Ezek kvázi reguláris kifejezések, felírható az első hárommal is...
Decimális törtszámok
([\-]?[1-9][0-9]*)|([\-][0-9])(\.(0|([0-9]*[1-9])))?
Idő típus
((1?[0-9])|(2[0-3]))\:[1-5]?[0-9]
Flex RegEx
x- az 'x' karakter
.- tetszőleges, nem újsor karakter
[xyz]- a felsorolt karakterek valamelyike
[abj-oZ]- karakterhalmaz intervallummal
- itt most 'a', bagy 'b', vagy 'j'-től 'o'-ig, vagy 'Z'
- karakterhalmaz intervallummal
[^A-Z]- A felsoroltak közül egyik se (negált halmaz)
[^A-Z\n]esetén az újsor karakter sem
- A felsoroltak közül egyik se (negált halmaz)
\x- speciális karakterek, amik nem írhatóak le máshogy
- újsor, nem látható fehér elválasztók, tabulátor
\123- bármely karakter annak UTF-8-as alakjában
\x2apedig a hexadecimális megadás
Műveletek
rs- konkatenáció ('r', majd 's')
r|s- unió ('r' vagy 's')
(r)- műveleti sorrent emelése
r*- 0, vagy több
r+- 1, vagy több
r?- 0, vagy 1
r{2,5}- minimum 2, de maximum 5
r{2,}- minimum 2
r{4}- pontosan 4
^r- sor elején 'r'
r$- sor végén 'r'
{name}- a deklarációs részben megadott
nameazonosítójú makró alkalmazása
- a deklarációs részben megadott
Még több random példa
[a-zA-Z](_?[a-zA-Z0-9])*