Kihagyás

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
    • if while then
  • azonosító
    • prioritással az alapszavakhoz képest
  • operátorok / műveletek
    • == ++ and
  • konstansok
    • 123 3.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'
  • [^A-Z]
    • A felsoroltak közül egyik se (negált halmaz)
      • [^A-Z\n] esetén az újsor karakter sem
  • \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
    • \x2a pedig 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 name azonosítójú makró alkalmazása

Még több random példa

[a-zA-Z](_?[a-zA-Z0-9])*