Reguláris kifejezések

Hasonló dokumentumok
Flex tutorial. Dévai Gergely

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Feladatok. 6. A CYK algoritmus segítségével döntsük el, hogy aabbcc eleme-e a G = {a, b, c}, {S, A, B, C}, P, S nyelvtan által generált nyelvnek!

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Chomsky-féle hierarchia

Reguláris kifejezések 1.

ZH feladatok megoldásai

BASH SCRIPT SHELL JEGYZETEK

Bevezetés. Párhuzamos vetítés és tulajdonságai

Formális nyelvek és automaták vizsgához statisztikailag igazolt várható vizsgakérdések

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Házi feladatok megoldása. Nyelvek felismerése. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 5. gyakorlat

Bisonc++ tutorial. Dévai Gergely. A szabály bal- és jobboldalát : választja el egymástól. A szabályalternatívák sorozatát ; zárja le.

Bevezetés a programozásba I.

Feladatok: 1. Add meg a következ balreguláris nyelvtannak megfelel jobbreguláris nyelvtant!

Formális nyelvek és automaták

Alapozás. Scriptek, scriptnyelvek. Dinamikus és statikus típusrendszerek. Miért érdemes használni? Perl

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

A számítógépes nyelvészet elmélete és gyakorlata. Formális nyelvek elmélete

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába


Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

L'Hospital-szabály március 15. ln(x 2) x 2. ln(x 2) = ln(3 2) = ln 1 = 0. A nevez határértéke: lim. (x 2 9) = = 0.

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

rank(a) == rank([a b])

Függvények határértéke, folytonossága

HALMAZOK. A racionális számok halmazát olyan számok alkotják, amelyek felírhatók b. jele:. A racionális számok halmazának végtelen sok eleme van.

9. előadás Környezetfüggetlen nyelvek

Chomsky-féle hierarchia

1. Alapok. #!/bin/bash

JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Harmadik gyakorlat. Számrendszerek

Matematikai és matematikai statisztikai alapismeretek

Készítette: Nagy Tibor István

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Bevezetés a programozásba I.

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Adatszerkezetek és algoritmusok

Fordítóprogramok (A,C,T szakirány) Feladatgy jtemény

1. Reguláris kifejezések illeszkedése

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

KOVÁCS BÉLA, MATEMATIKA I.

Formális nyelvek és automaták

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

Reguláris vagy szabályos kifejezések

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák.

Operációs rendszerek gyakorlat

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

KETTŐS KÖNYVELÉS PROGRAM CIVIL SZERVEZETEK RÉSZÉRE

A PiFast program használata. Nagy Lajos

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás I gyakorlat

2018, Diszkrét matematika

ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA

3. gyakorlat. 1/7. oldal file: T:\Gyak-ArchiCAD19\EpInf3_gyak_19_doc\Gyak3_Ar.doc Utolsó módosítás: :57:26

7. előadás Környezetfüggetlen nyelvtanok

Feladatok. BNF,EBNF,szintaxisgráf

NFSZ INTEGRÁLT INFORMÁCIÓS RENDSZER KTK KÖZFOGLALKOZTATÁSI TÁMOGATÁSOK KERETRENDSZERE. Országos közfoglalkoztatási program

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

Taylor-polinomok. 1. Alapfeladatok április Feladat: Írjuk fel az f(x) = e 2x függvény másodfokú Maclaurinpolinomját!

Átrendezések és leszámlálások ÚTMUTATÓ Hegedüs Pál június 30.

Házi feladatok megoldása. Nyelvtani transzformációk. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 6. gyakorlat.

Kirakós játék. Döntő február 22. Alakzatok (katalógus) DUSZA ÁRPÁD ORSZÁGOS PROGRAMOZÓI EMLÉKVERSENY 2013/2014

MATEMATIKA A és B variáció

Assembly programozás: 2. gyakorlat

Ütemezések speciális rugalmas gyártórendszereken

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

A DDR 3D Bajnokság célja: Jellege: A DDR 3D Bajnokság rendezői: Helyszínek, időpontok: Korosztályok, javasolt nevezési díjak: Díjazás:

A TANTÁRGYTÖMBÖSÍTETT OKTATÁS BEVEZETÉSÉNEK KIDOLGOZÁSA

MintaFeladatok 1.ZH Megoldások

K&H e-bank. felhasználói kézikönyv. utolsó frissítés dátuma:

Predikátumkalkulus. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. Vizsgáljuk meg a következ két kijelentést.

A C programozási nyelv I. Bevezetés

Segédlet az Informatika alapjai I. című tárgy számrendszerek fejezetéhez

A C programozási nyelv I. Bevezetés

Kisvállalkozások könyvelése. Infotéka Kft. programjaival

Vezetéses Totó kulcsok Enciklopédiája I.

MAGYAR POSTA BEFEKTETÉSI ZRT. e-befektetés. Felhasználói kézikönyv

HTML és CSS. Horváth Árpád május 6. Óbudai Egyetem Alba Regia M szaki Kar (AMK) Székesfehérvár

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Gyakorló feladatok az 1. nagy zárthelyire

Bevezetés. 1. fejezet. Algebrai feladatok. Feladatok

Halmazok. Halmazelméleti lapfogalmak, hatványhalmaz, halmazm veletek, halmazm veletek azonosságai.

Útmutató a Debreceni Egyetem Állam- és Jogtudományi Kar Nemzetközi Jogi Tanszékén készülő szakdolgozatok szerzői részére

Lineáris algebra 2. Filip Ferdinánd december 7. siva.banki.hu/jegyzetek

Regionális forduló november 18.

Fókuszált fénynyalábok keresztpolarizációs jelenségei

43. ORSZÁGOS TIT KALMÁR LÁSZLÓ MATEMATIKAVERSENY MEGYEI FORDULÓ HETEDIK OSZTÁLY JAVÍTÁSI ÚTMUTATÓ

Programozás I gyakorlat

Regionális forduló november 19.

Halmazok. Halmazelméleti alapfogalmak, hatványhalmaz, halmazm veletek, halmazm veletek azonosságai.

Béta Software számlázó programok adóhatósági ellenőrzési adatszolgáltatása (AEA)

KELE3. Felhasználói kézikönyv

AllBestBid. Felhasználói kézikönyv az AllBestBid online aukciós szolgáltatás használatához március DFL Systems Kft.

Vényírás. 1. ábra. 1. oldal

Adatexport útmutató Könyvvizsgálói program számára átadott adatok XML formátumban

Aritmetikai kifejezések lengyelformára hozása

INFORMATIKAI ALAPISMERETEK

Átírás:

Reguláris kifejezések Horváth Árpád <horvath.arpad.szfvar@gmail.com> 2017. március 9.

Vázlat Hol alkalmazhatunk reguláris kifejezéseket A reguláris kifejezések minimális nyelve Automatás feladatok Gyakorlati tudnivalók

Egy nyelv Melyik lehet? Melyikek hibásak? Hogyan ellen riznénk programmal? ABC-001 TRA-548 AAA-000-01 AAA- NEKEM-8 KISAPA-01 FERI-12 KISAPA-0122333

Reguláris kifejezések

Egy nyelv Benne van: ABC-001 AAA-000 talán, nem kukacoskodunk :-) TRA-548 FERI-12 NEKEM-8 EWING-1 Nincs benne: -01 AAA- KISAPA-01 KISAPA-0122333

Másik nyelv Melyik lehet? Melyikek hibásak? Hogyan ellen riznénk programmal? joci@csillagasz.at horvath.arpad@amk.uni-obuda.hu x_ipszilon@gmail.com very.common@example.gov bobebaba13@futrinka.mtv.hu bobe@baba13@futrinka.mtv.hu abc.example.com bobebaba13@futrinka.mtv. bobebaba13@futrinka..hu

Hol alkalmazhatunk reguláris kifejezéseket Vázlat Hol alkalmazhatunk reguláris kifejezéseket A reguláris kifejezések minimális nyelve Automatás feladatok Gyakorlati tudnivalók

Hol alkalmazhatunk reguláris kifejezéseket Mire jók a reguláris kifejezések A reguláris kifejezések a reguláris nyelvek tömör leírását adják. A reguláris kifejezések egy algoritmussal véges automatává alakítható, ami alapján készíthet olyan program vagy hardvereszköz, amely ellen rizni tud egy reguláris kifejezést. Ezzel az algoritmussal nem foglalkozunk, (az megtalálható a Bach-könyvben, illetve az átalakítás gyakorlolható a JFLAP programmal). Mi a reguláris kifejezések létrehozásával fogunk foglalkozni. Az ellen rzést más tárgyakban rábízzuk a programnyelvek kész eszközeire. A programnyelvek és az XML/HTML fájlok környezetfüggetlen nyelvének szintaktikai elemzése kívül esik a reguláris kifejezések hatókörén.

Hol alkalmazhatunk reguláris kifejezéseket Reguláris nyelvek, kifejezések és nyelvtanok ill. véges automaták kapcsolata reguláris kifejezés reguláris nyelv reguláris nyelvtan véges automata

Hol alkalmazhatunk reguláris kifejezéseket Reguláris nyelvek, kifejezések és nyelvtanok ill. véges automaták kapcsolata reguláris kifejezés tömör leírás reguláris nyelv szavak halmaza reguláris nyelvtan levezetési szabályok véges automata állapotgráf

Hol alkalmazhatunk reguláris kifejezéseket Hol találkozhatunk reguláris kifejezésekkel? Programnyelvek Van ahol a programnyelv része: perl, awk JavaScript PostgreSQL vagy standard könyvtárában benne van: C# Python

Hol alkalmazhatunk reguláris kifejezéseket És még hol találkozunk regexp-el? (regular expression = regexp) Ezekben kereshetünk /-rel: vim man less Firefox Parancsok, amelyekben használható: grep sed A django web-keretrendszer a kapott URL-eket reguláris kifejezésekkel hasonlítja össze, így d l el, mit csinál, milyen paraméterekkel.

A reguláris kifejezések minimális nyelve Vázlat Hol alkalmazhatunk reguláris kifejezéseket A reguláris kifejezések minimális nyelve Automatás feladatok Gyakorlati tudnivalók

A reguláris kifejezések minimális nyelve Az alábbiakban r, r1, r2 egy-egy érvényes reguláris kifejezést jelent. A reguláris kifejezések leírhatóak a következ pár szabály alkalmazásával: r* r-b l 0-ra vagy többre illeszkedik r1 r2 vagy r1-re, vagy r2-re illeszkedik (r) csoportosítás r1r2 összef zés Példák: kifejezés illeszkedik erre nem illeszkedik erre ab*a aa aba abbba ab*a (ab)*a a aba ababa ababababa ab*a abab (a A)lma Alma alma colo( u)r color colour

A reguláris kifejezések minimális nyelve Feladat Milyen reguláris kifejezés illik az alábbi szavakra? ea ema emma emmma... emmmmmmmma... A feladatokat követ dián megoldás következik.

A reguláris kifejezések minimális nyelve Megoldás Milyen reguláris kifejezés illik az alábbi szavakra? ea ema emma emmma... emmmmmmmma... Legkézenfekv bb megoldás: em*a

A reguláris kifejezések minimális nyelve Feladat Milyen reguláris kifejezés illik az alábbi szavakra? ema emma emmma... emmmmmmmma..., de ea nem A feladatokat követ dián megoldás következik.

A reguláris kifejezések minimális nyelve Megoldás ema emma emmma... emmmmmmmma..., de ea nem Legkézenfekv bb megoldás: emm*a

A reguláris kifejezések minimális nyelve Feladat Milyen reguláris kifejezés illik az alábbi szavakra? alma1 alma2 alma3 emma1 emma2 emma3 A feladatokat követ dián megoldás következik.

A reguláris kifejezések minimális nyelve Megoldás alma1 alma2 alma3 emma1 emma2 emma3 Két viszonylag kézenfekv megoldás is van: (al em)ma(1 2 3) vagy (alma emma)(1 2 3)

A reguláris kifejezések minimális nyelve Jelölésmódok A Bach Iván könyvben a választás jelölése +. Itt a reguláris kifejezések esetén gyakorlatban is használt jelölést használjuk. A többi jelölés egyezik az itteniekkel. A reguláris kifejezések gyakorlatában a + jel a *-hoz hasonló, de 1 vagy több el fordulást jelöl.

A reguláris kifejezések minimális nyelve Speciális jelentés levédése A * és jeleknek speciális jeletése van, de néha szükséges, hogy * vagy jelekre illesszünk. Ilyenkor általában a \ karaktert illesztjük a speciális jeletés karakter elé, hasonlóan, mint ahogy az újsort jelöljük a karakterláncok esetén (\n). Az egyes alkalmazások reguláris nyelvei eltérnek abban, hogy a levédett vagy a levédetlen alak jelenti a speciális jelentést. Ezek között az egyik véglet a Python nyelv re modulja, ahol általában a speciális jelentést nem kell levédeni, a másik véglet a Vim és a grep, ahol általában a speciális jelentést kell levédeni.

A reguláris kifejezések minimális nyelve A speciális jelentések levédése (folyt.) A * és a. (pont) jelöléseket egyik esetben sem kell levédeni a speciális jelentéshez (és más általam ismert programnyelvben sem). (A. tetsz leges karakterre illeszkedik.) A * és. karakterekre a \* és \. kifejezés illeszkedik. A \ (visszaper, backslash) karakterre a \\ reguláris kifejezés illeszkedik. Az további példákban a Python jelölésmódját mutatom be, a példamegoldáshoz azt kell tudni, és aszerint kell megoldani a feladatokat. A Python nyelvben a csoportosítás zárójelét nem kell levédeni, a \( és a \) illeszkedik a zárójelekre. Szintén nem kell levédeni a választás függ leges vonalát, tehát a \ a karakterre illeszkedik. A jelek, amelyeket le kell védeni, mert speciális jelentésük van *. \[]{}+?^$

A reguláris kifejezések minimális nyelve Feladat Hogyan illesztenénk olyan kifejezésre, amely 0 vagy több a-bet után egy *, majd egy vagy több b bet követ? M Megoldás jön! Lapozás el tt próbálja megoldani a feladatot!

A reguláris kifejezések minimális nyelve Megoldás Hogyan illesztenénk olyan kifejezésre, amely 0 vagy több a-bet után egy *, majd egy vagy több b bet követ? a*\*bb* vagy a*\*b+ utóbbi esetben eltér lehet, hogy a + elé kell-e \.

A reguláris kifejezések minimális nyelve Feladat Hogyan illeszthetünk olyan kifejezést, amelynél két bináris számjegy után. (pont) majd egy bináris számjegy következik? Pl: 01.1 10.0 11.1 M Megoldás jön! Lapozás el tt próbálja megoldani a feladatot!

A reguláris kifejezések minimális nyelve Megoldás Hogyan illeszthetünk olyan kifejezést, amelynél két bináris számjegy után. (pont) majd egy bináris számjegy következik? (0 1)(0 1)\.(0 1)

A reguláris kifejezések minimális nyelve Feladat Melyek illeszkednek az els reguláris kifejezésekre az azt követ szavak közül? a.*b accb a..b a.*b a**b a...b a*b* A.b a\.*b a...b a\.b a\..b a\ccb ab a.b a(ab)*b ab a(ab)))b aab aababb ababab aabababb (0 1 2)*(a b)* 0 1 2a b ab12 (21)(ba) 012ab 210ba ab012 012*ab* ( o O)buda( i) buda budai budai Obuda Obudai (Obudai) (o)buda(i) obuda )buda(i) \((0 1 2),(2 3)\) 2,3 \(2,2\) (0,1) (0,3 (1,3) ((1),(2)) (13) (2,3) (1,2)

A reguláris kifejezések minimális nyelve Megoldások Az egyes sorokból a következ ek helyesek csak: a.*b accb a..b a.*b a**b a...b a\.*b a...b ab a.b a(ab)*b ab aababb aabababb (0 1 2)*(a b)* 012ab 210ba ( o O)buda( i) buda budai Obuda Obudai obuda \((0 1 2),(2 3)\) (1,3) (2,3) (1,2) Zárthelyiben az el z höz hasonló kiválasztásos feladatok esetén a helytelenül aláhúzott változatok pontlevonással járnak.

Vázlat Hol alkalmazhatunk reguláris kifejezéseket A reguláris kifejezések minimális nyelve Automatás feladatok Gyakorlati tudnivalók

Miért kell b víteni? A reguláris kifejezések leírásához elegend a kezdetben említett négy lehet ség, mégis sok esetben elég körülményes azokkal felírni azt, amit illeszteni szeretnénk. Az egyik nehézség, amikor nagy számú karakter valamelyikére, például tetsz leges bet re, kell illeszkedni, az elég hosszan írható csak le. Ezért bevezetünk egy bet - vagy számintervallumok megadására is alkalmas halmazjelölést. Egy másik probléma, hogy az ismétlések számát nem olyan egyszer megadni. Hogyan adhatjuk meg azt, hogy a b bet egymás után legalább 2-szer, de maximum 7-szer szerepelhet? Például így: (bb bbb bbbb bbbbb bbbbbb bbbbbbb) vagy így bb( b bb bbb bbbb bbbbb) egyik sem kellemes.

Halmazjelölés A szögletes zárójel halmaz magadására alkalmas. Legegyszer bb formájában a felsorolt karakterek halmazát jelenti: [ilab@._]* illeszkedik az ali_baba@abba.lb szóra. (A már említett. (pont) karaktert itt nem kell levédeni, nincs értelme a speciális jelentésnek.) Megadhatunk szám és bet intervallumokat is, amennyiben a kezd és végkarakter közé jelet (köt jel) rakunk. Például a decimális számjegyeket, a(z ékezet nélküli) nagybet ket, illetve a kisbet ket a következ képpen adhatjuk meg: [0-9] [A-Z] [a-z]

Feladat Vajon hogyan adható meg egy nyolcas számrendszerbeli (oktális) számjegy az intervallumjelöléssel?

Feladat Vajon hogyan adható meg egy nyolcas számrendszerbeli (oktális) számjegy az intervallumjelöléssel? [0-7] Hogyan adható meg egy hexadecimális számjegy? (Egyszer ség kedvéért a bet k nagybet vel szerepeljenek: A, B, C, D, E, F!)

Feladat Vajon hogyan adható meg egy nyolcas számrendszerbeli (oktális) számjegy az intervallumjelöléssel? [0-7] Hogyan adható meg egy hexadecimális számjegy? (Egyszer ség kedvéért a bet k nagybet vel szerepeljenek: A, B, C, D, E, F!) ([0-9] [A-F]) Az intervallumok összevonhatóak egy szögletes zárójelbe szorosan egymás mellé írva: [0-9A-F]

Karakterhalmazok megadása Az el bbi jelölés tetsz leges karakterhalmazok megadására is alkalmas. Az [c0-3@] kifejezés a c, 0, 1, 2, 3 és @ mindegyikére illeszkedik. Ha egy halmaznak jelre (köt jel) is illeszkednie kell, akkor el re rakjuk a jelet, vagy védjük le. [-+03], +, 0 és 3 karakterekre illeszkedik [+0\-3] ez is [+0-3] +, 0, 1, 2 és 3 karakterekre illeszkedik

Feladat Egy intézetben két épület van, amelyeket K és F bet vel jelölnek. A termek sorszámozása mindegyik épületben 0-tól 99-ig történik. A termeket a következ képp adják meg K.00 K.01... K.99, F.00, F.01,... F.99. Írjon reguláris kifejezést, amely mindegyik teremnévre illeszkedik! M Megoldás jön! Lapozás el tt próbálja megoldani a feladatot!

Megoldás [FK]\.[0-9][0-9] Halmazjelölés nélkül: (F K)\.(0 1 2 3 4 5 6 7 8 9)(0 1 2 3 4 5 6 7 8 9)

Speciális jelölések karakterhalmazokra Néhány speciális halmaz jele látható az alábbi halmazban. Elég az els hármat tudni.. (pont) tetsz leges karakterre \d decimális karakterek [0-9] \w [0-9a-zA-Z_] \W az el bbi ellentettje \s [ \t\n\r\f\v] \S az el bbi ellentettje A \w tehát a változónevekben szerepl karaktereket tartalmazza a \s pedig a szóközt, a tabulátort és az újsort is magában foglaló whitespace karaktereket. Ezek halmazon belül is használhatóak, illetve a halmazjelölés szögletes zárójelén belül a pont elveszti speciális jelentését. Emiatt a [-.\w]+ illeszkedik az Django_10.My-Server.hu kifejezésre.

Ismétlések Az alábbi ismétlést jelent jeleket használhatjuk. n és m mindenhol természetes számot jelent. * 0 vagy több ismétl dés + 1 vagy több ismétl dés? 0 vagy 1 ismétl dés (van vagy nincs) {n} pontosan n ismétl dés {n,m} min. n, max. m ismétl dés {,m} max. m ismétl dés {n,} min. n ismétl dés

Feladat Melyek illeszkednek az els reguláris kifejezésekre az azt követ szavak közül? [A-Z]{2}\d{5} CA12345 12345CA C1B2345 XX111 AA54321 (1?\d{2} 2[0-4]\d 25[0-5]) 256 1222 255 00 1?44 244 133 (da){2,}dog dadog da{2,}dog dadadadog dadadog [.\w]+... al-hakim man_page re_howto.pdf index.html b[a-j]+ baba baj b bujj b[a] b[a]+ ba+ https? https? http https httpst httpsa \d+\.\d*[ee]-?\d+ 6.02e23 6e23 1.38E-23 1.2E-.5e2 1.E-6 2.333[eE]-?5 \(\d+\+\d+\) (33\+44) (5+6) (4-5) (33++44) (+22) (123+456)

Megoldás Csak ezek: [A-Z]{2}\d{5} CA12345 AA54321 (1?\d{2} 2[0-4]\d 25[0-5]) 255 00 244 133 (da){2,}dog dadadadog dadadog [.\w]+... man_page re_howto.pdf index.html b[a-j]+ baba baj https? http https \d+\.\d*[ee]-?\d+ 6.02e23 1.38E-23 1.E-6 \(\d+\+\d+\) (5+6) (123+456) A második kis hibával a 0 és 255 közötti számokat adja. A kis hiba, hogy a 00 01... 09 formájú számok is vannak közöttük. Kis munkával javítható: ([0-9] [1-9]\d 1\d{2} 2[0-4]\d 25[0-5])

Feladat Hogyan illeszthetünk a szokásos magyar rendszámokra? Az alábbiak arra jók, hogy lássuk mire lehet/érdemes reguláris kifejezést írni. Ennyire összetett feladat nem lesz számonkéréskor. Próbáljunk egy közelít reguláris kifejezést készíteni a következ kre: IP-címek e-mailek URL-ek M Megoldás jön! Lapozás el tt próbálja megoldani a feladatot!

Megoldások (nem mind) [A-Z]{3}-[0-9]{3} IP-k (több sorban, re.verbose mód) ( (1?\d\d 2[0-4]\d 25[0-5]) \. ){3} (1?\d\d 2[0-4]\d 25[0-5]) e-mailek (szóközökkel elválasztva, re.verbose mód) [-\w.]+ @ ([-\w]+\.)+ (hu de uk... com org...)

Zárójelpárosítás Lehet-e zárójelpárosításokat ellen rizni reguláris kifejezésekkel? Korlátozott számú kapcsos zárójelet hogyan ellen rizhetek?

Zárójelpárosítás Lehet-e zárójelpárosításokat ellen rizni reguláris kifejezésekkel? Korlátozott számú kapcsos zárójelet hogyan ellen rizhetek? Korlátlan számú kapcsos zárójelet hogyan ellen rizhetek?

Zárójelpárosítás Lehet-e zárójelpárosításokat ellen rizni reguláris kifejezésekkel? Korlátozott számú kapcsos zárójelet hogyan ellen rizhetek? Korlátlan számú kapcsos zárójelet hogyan ellen rizhetek? Korlátozott számú vegyes zárójelet hogyan ellen rizhetek?

Zárójelpárosítás Lehet-e zárójelpárosításokat ellen rizni reguláris kifejezésekkel? Korlátozott számú kapcsos zárójelpár: Pl. max 2 darab egymásba ágyazott, azaz {{}} vagy {} vagy ε. ({({})?})? (átláthatóság kedvéért a kapcsos zárójelek levédését elhagytam). Háromnál sorrendek {}{}{} {{}{}} {{{}}}

Zárójelpárosítás Lehet-e zárójelpárosításokat ellen rizni reguláris kifejezésekkel? Korlátozott számú kapcsos zárójelpár: Pl. max 2 darab egymásba ágyazott, azaz {{}} vagy {} vagy ε. ({({})?})? (átláthatóság kedvéért a kapcsos zárójelek levédését elhagytam). Háromnál sorrendek {}{}{} {{}{}} {{{}}} Korlátlan számú kapcsos zárójelpár: A zárójelezések nyelve környezetfüggetlen nyelv, nem fér bele a regulárisba nincs hozzá reguláris kifejezés.

Zárójelpárosítás Lehet-e zárójelpárosításokat ellen rizni reguláris kifejezésekkel? Korlátozott számú kapcsos zárójelpár: Pl. max 2 darab egymásba ágyazott, azaz {{}} vagy {} vagy ε. ({({})?})? (átláthatóság kedvéért a kapcsos zárójelek levédését elhagytam). Háromnál sorrendek {}{}{} {{}{}} {{{}}} Korlátlan számú kapcsos zárójelpár: A zárójelezések nyelve környezetfüggetlen nyelv, nem fér bele a regulárisba nincs hozzá reguláris kifejezés. Korlátozott számú vegyes zárójelpár: Nagyon bonyolult. Ismerni kell a lehetséges sorrendeket.

Zárójelpárosítás Lehet-e zárójelpárosításokat ellen rizni reguláris kifejezésekkel? Korlátozott számú kapcsos zárójelpár: Pl. max 2 darab egymásba ágyazott, azaz {{}} vagy {} vagy ε. ({({})?})? (átláthatóság kedvéért a kapcsos zárójelek levédését elhagytam). Háromnál sorrendek {}{}{} {{}{}} {{{}}} Korlátlan számú kapcsos zárójelpár: A zárójelezések nyelve környezetfüggetlen nyelv, nem fér bele a regulárisba nincs hozzá reguláris kifejezés. Korlátozott számú vegyes zárójelpár: Nagyon bonyolult. Ismerni kell a lehetséges sorrendeket. Veremautomatával egyszer lesz mindegyik.

Az elméleti rész összefoglalója A reguláris kifejezések tömör leírását adják a reguláris nyelveknek.

Az elméleti rész összefoglalója A reguláris kifejezések tömör leírását adják a reguláris nyelveknek. Alkalmasak

Az elméleti rész összefoglalója A reguláris kifejezések tömör leírását adják a reguláris nyelveknek. Alkalmasak számunkra érdekes adatok megkeresésére (grep), cseréjére (sed, vim),

Az elméleti rész összefoglalója A reguláris kifejezések tömör leírását adják a reguláris nyelveknek. Alkalmasak számunkra érdekes adatok megkeresésére (grep), cseréjére (sed, vim), hibás alakú adatok kisz résére (validálás).

Az elméleti rész összefoglalója A reguláris kifejezések tömör leírását adják a reguláris nyelveknek. Alkalmasak számunkra érdekes adatok megkeresésére (grep), cseréjére (sed, vim), hibás alakú adatok kisz résére (validálás). Tömör jelölések karakterhalmazokra és ismétlésre.

Az elméleti rész összefoglalója A reguláris kifejezések tömör leírását adják a reguláris nyelveknek. Alkalmasak számunkra érdekes adatok megkeresésére (grep), cseréjére (sed, vim), hibás alakú adatok kisz résére (validálás). Tömör jelölések karakterhalmazokra és ismétlésre. Reguláris nyelveket adnak meg programok szintaktikai elemzésre nem alkalmasak.

Az elméleti rész összefoglalója A reguláris kifejezések tömör leírását adják a reguláris nyelveknek. Alkalmasak számunkra érdekes adatok megkeresésére (grep), cseréjére (sed, vim), hibás alakú adatok kisz résére (validálás). Tömör jelölések karakterhalmazokra és ismétlésre. Reguláris nyelveket adnak meg programok szintaktikai elemzésre nem alkalmasak. Zárójelpárosítás ellen rzésére korlátozottan alkalmas.

Mikkel foglalkoztunk eddig? Összetev k és kapcsolatok El ször az összetev k. kifejezés

Mikkel foglalkoztunk eddig? Összetev k és kapcsolatok El ször az összetev k. reguláris kifejezés

Mikkel foglalkoztunk eddig? Összetev k és kapcsolatok El ször az összetev k. reguláris kifejezés reguláris nyelv

Mikkel foglalkoztunk eddig? Összetev k és kapcsolatok El ször az összetev k. reguláris kifejezés reguláris nyelv reguláris nyelvtan

Mikkel foglalkoztunk eddig? Összetev k és kapcsolatok El ször az összetev k. reguláris kifejezés reguláris nyelv reguláris nyelvtan véges automata

Mikkel foglalkoztunk eddig? Összetev k és kapcsolatok Mindhárom egyértelm en meghatározza a nyelvet. Milyen igéket használunk az egyes esetekben? reguláris kifejezés reguláris nyelv reguláris nyelvtan det. véges automata

Mikkel foglalkoztunk eddig? Összetev k és kapcsolatok Mindhárom egyértelm en meghatározza a nyelvet. Milyen igéket használunk az egyes esetekben? reguláris kifejezés generálja reguláris nyelv reguláris nyelvtan det. véges automata

Mikkel foglalkoztunk eddig? Összetev k és kapcsolatok Mindhárom egyértelm en meghatározza a nyelvet. Milyen igéket használunk az egyes esetekben? reguláris kifejezés reguláris nyelv generálja felismeri reguláris nyelvtan det. véges automata

Mikkel foglalkoztunk eddig? Összetev k és kapcsolatok reguláris kifejezés illeszkedik a szavaira reguláris nyelv generálja felismeri reguláris nyelvtan det. véges automata Nézzünk pár feladatot a véges automaták és reguláris kifejezések kapcsolatára.

Automatás feladatok Vázlat Hol alkalmazhatunk reguláris kifejezéseket A reguláris kifejezések minimális nyelve Automatás feladatok Gyakorlati tudnivalók

Automatás feladatok Feladat Milyen reguláris kifejezéssel írható le az alábbi véges automata által felismert nyelv? Írjuk le b vítetlen reguláris kifejezéssel és tömörebben a b vített reguláris kifejezés használatával! b a b q 0 q 1 q 2 a a Írjuk le a nyelvet halmazjelöléssel is! b M Megoldás jön! Lapozás el tt próbálja megoldani a feladatot!

Automatás feladatok Megoldás b*aa*b(a b)* vagy b*a+b[ab]* Az els megoldás nem használja a b vített nyelvet. L = {b i a j bw i 0, j > 0, w {a, b} }

Automatás feladatok Feladat Milyen reguláris kifejezéssel írható le az alábbi véges automata által felismert nyelv? Használhatja a b vített reguláris kifejezést! a c q 0 q 1 q 2 b c b q 3 Írjuk le a nyelvet halmazjelöléssel is! (Létrehozhatja a nyelvtant is, ami ugyanazt a nyelvet generálja, amit az automata felismer.) M Megoldás jön! Lapozás el tt próbálja megoldani a feladatot!

Automatás feladatok Megoldás (ab+ ab*c+ ) esetleg (ab*(b c+) ) Az els változat három függ leges vonallal elválasztott tagból áll: az els tag, amikor a B-be érek, a második, amikor a C-be érek, a harmadik amikor S-ben maradok üres szóval. Ugyanebben a sorrendben szerepelnek az alábbi halmazok, amelyeknek az unióját vesszük. L = {ab i i > 0} {ab i c j i 0, j > 0} {ε}

Automatás feladatok Feladat Rajzolja le olyan véges automaták állapotgráfjait, amely az alábbi reguláris kifejezések által megadott nyelvet ismeri fel! ab*c 0(12* 1+) a(b*c a+) ez nehezebb, ilyen nehéz nem lesz. M Megoldás jön! Lapozás el tt próbálja megoldani a feladatot!

Automatás feladatok Megoldás ab*c legkézenfekv bb megoldása: b a c q 0 q 1 q 2 0(12* 1+) egy lehetséges megoldása: 0 1 q 0 q 1 q 2 1 1 q 3 2

Automatás feladatok Reguláris kifejezésb l véges automata A reguláris kifejezések illesztéséhez nem ötletszer megoldások, hanem algoritmusok szükségesek. Az, hogy bármely reguláris kifejezés esetén meg tudjuk alkotni a véges automatát, amellyel meg tudjuk vizsgálni az egyes szavakat. Van erre algoritmus, de mi nem tanuljuk. (A Bach-könyvben vagy máshol megnézheti, aki akarja, és a JFLAP-pel gyakorolhatja, de számunkra nem szükséges.)

Gyakorlati tudnivalók Vázlat Hol alkalmazhatunk reguláris kifejezéseket A reguláris kifejezések minimális nyelve Automatás feladatok Gyakorlati tudnivalók

Gyakorlati tudnivalók Mihez szükséges? A további gyakorlati tudnivalóak nem szükségesek a Formális nyelvek feladatainak a megoldásához, hasznosak viszont a Linux alkalmazása kurzushoz, mivel a grep és a django használatakor (URL-értelmezés, bevitt adatok ellen rzése=validálása) is szükséges dolgok vannak hátra. Hasznos továbbá, ha valamikor a Pythonban saját programot szeretnénk írni, ami reguláris kifejezéseket használ.

Gyakorlati tudnivalók A sor eleje és vége A sor elejére a ^ (kalap) a végére a $ karakterek illeszkednek. Ha például a re.search függvénnyel keresünk, akkor az "aba" kifejezés illeszkedni fog az "Alabama" karakterláncra, annak aba részére. A "^aba" nem fog illeszkedni rá, de az "abama" és "abakusz" karakterláncra igen. A "^aba$" egyedül az "aba" karakterláncra fog illeszkedni. A Formális nyelvek rész feladatai teljes illeszkedést feltételeztek, mintha minden kifejezés elején ott lenne a ^ és a végén a $. Ez a megszokott mód az elméleti tárgyalások során, például a Bach Iván könyvében is, ha például egy nyelvet reguláris kifejezéssel írunk le.

Gyakorlati tudnivalók A nyers karakterláncok és a b írásmód A Python nyelv re modulja képes reguláris kifejezéseket kezelni. Ha r bet t írunk a karakterlánc elé, a \ nem viselkedik speciális karakterként könnyebben írhatunk reguláris kifejezéseket. A re.verbose paraméterrel sorokra bonthatjuk, és megjegyzésekkel láthatjuk el a reguláris kifejezéseket.

Gyakorlati tudnivalók Példa az r"" és a re.verbose használatára # r nélkül re.search("\\d+\\.\\d*", "123.6") # r-rel re.search(r"\d+\.\d*", "123.6") # r-rel és re.verbose-zel re.search(r""" \d+ # egész rész \. # tizedes pont \d* # törtrész """, "123.6", re.verbose)

Gyakorlati tudnivalók Python és Vim összehasonlítása A speciális jelentést: egyikben sem kell levédeni:. (pont), *, [] ^ $ \ csak Vimben kell levédeni: ( ) {? +

Gyakorlati tudnivalók Dokumentációk A reguláris kifejezések az itt leírtaknál nagyobb mélységgel rendelkeznek mind a Python nyelvben, mind a Vim szövegszerkeszt ben. A reguláris kifejezések Pythonbeli használatáról a Python dokumentációk között a Regular Expression HOWTO (a Python HOWTOs részben) és az re modul dokumentációja (a Library Reference részben) ad jó leírást. A reguláris kifejezések Vimbeli használatáról a :help regexp parancssal lehet többet megtudni. Lásd még: regexp_vim.txt