Reguláris kifejezések 1.



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

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

BASH SCRIPT SHELL JEGYZETEK

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

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

AWK programozás, minták, vezérlési szerkezetek

AWK programozás Bevezetés

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

Operációs Rendszerek II. labor. 2. alkalom

Reguláris vagy szabályos kifejezések

AWK programozás, minták, vezérlési szerkezetek

Formális nyelvek és automaták

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

Szűrők, reguláris kifejezések AWK programozás: minták, vezérlési szerkezetek, tömbök, beépített függvények, reguláris kifejezések

Szűrők Reguláris kifejezések, AWK

Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt

Reguláris vagy szabályos kifejezések

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

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

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

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

Automaták és formális nyelvek

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

Szövegszerkesztés haladó MS word

Flex tutorial. Dévai Gergely

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

Házi feladatok megoldása. Nyelvek használata adatszerkezetek, képek leírására

Bevezetés a számítástechnikába

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!

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

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Reguláris vagy szabályos kifejezések használata

Számelmélet, műveletek, egyenletek, algebrai kifejezések, egyéb

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

Írásjelek helyes szedése. Szabó Csaba. Mondatvégi írásjelek. Központozás. Kötőjelfélék. Szabó Csaba november 18.

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

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

Operációs rendszerek gyakorlat

- hányadost és az osztót összeszorozzuk, majd a maradékot hozzáadjuk a kapott értékhez

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

akadálymentesen i e Tervezés

2. Ítéletkalkulus szintaxisa

Dicsőségtabló Beadós programozási feladatok

Operációs rendszerek gyak.

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

Alkalmazott modul: Programozás

Regionális forduló november 18.

5. előadás Reguláris kifejezések, a reguláris nyelvek jellemzése 1.

Időzített átmeneti rendszerek

Véges automaták, reguláris nyelvek

4. Javítás és jegyzetek

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.

ZH feladatok megoldásai

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

S z á m í t ó g é p e s a l a p i s m e r e t e k

Műveletek egész számokkal

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

Operációs Rendszerek Gyakorlat

KOVÁCS BÉLA, MATEMATIKA I.

Programozás alapjai. 5. előadás

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

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI EMELT SZINT Számelmélet

Java II. I A Java programozási nyelv alapelemei

Szövegek C++ -ban, a string osztály

S z á m í t ó g é p e s a l a p i s m e r e t e k

1 2. gyakorlat Matematikai és nyelvi alapfogalmak. dr. Kallós Gábor

Chomsky-féle hierarchia

A sed folyamszerkesztő

Automaták mint elfogadók (akceptorok)

Diszkrét matematika 2. estis képzés

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Programozás 6. Dr. Iványi Péter

Matematika 8. osztály

A programozás alapjai 2 (VIIIAA03) Két fontos 3. féléves tárgyhoz is alapozunk: Szoftvertechnológia Programozás alapjai 3.

Lineáris algebra I. Vektorok és szorzataik

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

A digitális számítás elmélete

Bevezetés a programozásba I.

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

BODROGKOZ.COM / HASZNÁLATI ÚTMUTATÓ

Reguláris kifejezések

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

I. A DIGITÁLIS ÁRAMKÖRÖK ELMÉLETI ALAPJAI

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Logika és informatikai alkalmazásai

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

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. BNF,EBNF,szintaxisgráf

Diszkrét matematika I., 12. előadás Dr. Takách Géza NyME FMK Informatikai Intézet takach november 30.

Matematikai logika NULLADRENDŰ LOGIKA

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

3. Fuzzy aritmetika. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

Kifejezések. Kozsik Tamás. December 11, 2016

Chomsky-féle hierarchia

Átírás:

Reguláris kifejezések 1. A nyelvtechnológia eszközei és nyersanyagai 1. gyakorlat A beadandó feladatok be vannak keretezve! 1.1. Miért hívják reguláris kifejezésnek? (!) Az elméleti és a gyakorlati reguláris kifejezés valóban ugyanaz. (!) A reguláris kifejezések tényleg kifejezések. Def.: nyelv = abc fölötti string-halmaz Megj.: nyelvek közti műveletek pl.:,,, *,... Def.: reguláris nyelv = nyelvek legszűkebb halmaza, mely zárt a konkatenáció, unió, lezárás műveletekre. Def.: reguláris kifejezés = az Σ elemein kívül, csak (,),*, és spec. szimbólumokat tartalmazhatja Megj.: Definiálható olyan függvény, ami minden reg.kif-hez egy reg. nyelvet rendel hozzá. reguláris nyelvtan reguláris kifejezés véges automata mindhárom egy reguláris nyelvet ad meg. nyelv művelet nyelv = új nyelv Pl.: a, b, c ez három (egyelemű!) nyelv a konkat b = ab a unió b = a, b (jele: a b ) lezár a =, a, aa, aaa,... (jele: a* ) a* konkat b = b, ab, aab,... Az a*b (lezár a ) konkat b pontosan olyan kifejezés, mint az (5 * 4 + 2)/11. Sok további hasznos művelet van: http://www.cis.upenn.edu/ cis639/docs/fssyntax.html Innen indult, az igények szerint továbbfejlődött, kiterjesztették, a név rajtaragadt, pedig most már nem feltétlenül reguláris nyelvet ír le. 1

Elemek és rövidítések : atom: alapból az ábécé elemei, karakterek konkatenáció: egymás mellé írás unió:. [0-9] [ˆ0-9]? d w s lezárás: * + {n,m} 1/1 Utóbbiakat hogyan lehet levezetni a három alapműveletből? Kiterjesztések: horgony: ˆ $ sor-orientáltság miatt lett. b szóhatár. memória: () 1, ez az, ami kilép a reguláris osztályból! Mit kell -sel védeni : [ˆ$.?*+() és persze, valamint [] -n belül: ]-ˆ A regkif nyelvjárások közül az extended változatot fogjuk használni: sed -r illetve egrep (vagy grep -E ) Mit jelentenek az alábbiak? [.] \** ^[*]+$ ^\*+$ ^# ^$ <([^>]+)>alma</\1> *.*.{1,8}\..{3} \(\d+ \+ \d+\) \/ \d+ b[ae]n\b ^(van lesz nincs) 1/2 Három azonos jelből álló szavakat tartalmazó nyelv hogyan írható le reguláris kifejezéssel? Reguláris ez a nyelv? 1.2. Írj reguláris kifejezést! Itt lehet kipróbálni: http://regexpal.com/ biztonságos jelszó (legalább 6 karakter, tartalmaz nagybetűt, kisbetűt, számot) 2

szavak, melyek betűi abc sorrendben vannak a n ba n mondatvégi pont fájl elérési útja ITK-s email cím 2000-nél kisebb betűvel írt számokra Bónusz: angol befejezett jelen idejű mondatok 3-mal osztható bináris számok 1.3. Környezet keresés: cat f egrep "regkif" cserélés: cat f sed -r "s/regkif/csere/gi" több csere egymás után: "s///;s///..." tesztfájl: 01.txt 1.4. Keresős feladatok: grep Írj olyan egysoros scriptet, ami... a home könyvtáradban lévő mindenki számára olvasható fájlokat írja ki (ls).bash_history-ból a home könyvtárba váltó parancsokat írja ki a nev.txt fájlból az első 6 névre illeszkedik Idézet a man grep -ből: Email bug reports to bug-gnu-utils@gnu.org. Be sure to include the word "grep" somewhere in the "Subject:" field. Milyen regkiffel válogatják szét a leveleket? Név variációi: M[ou]?am+[ae]r.*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Miért m+? Helyette mit lehetne? Mi a szerepe a.* -nak? Emailcím-felismerés: Nézd meg az alábbi kifejezést a tesztfájlon! 3

{[\w\.]+@[^\.@]+\.[^\.@]+(\.[^\.@]+)*} Mi a hiba? Javítsd ki! 1/3 Rövidíteni a kifejezést + két/három karakterre korlátozni a domain-t + elemezni, milyen címeket nem fed le a kifejezés Időpont: ([01][0-9] 2[0-3]):[0-5][0-9] Mit kell változtatni, hogy 8:05-re is jó legyen? Írj regkif-et a hónapnevekre! Teszteld! 1/4 Írj regkif-et, ami az írott szövegben található időpontok minél nagyobb halmazát lefedi: tegnap, december 5-én, holnap fél 5-kor, 6-án 12:57-kor stb. 1.5. Mit jelentenek az alábbiak? s/ */ /g s/^m//g s/[ \t]+$// s/ ([.,:;?!]+)/\1/g s/^\"(.*)\"/\1/ s/^\"([^"]*)\"/\1/ 1/5 Valós problémafelvetés, amihez valóban jó lenne adott regkif többszöri rekurzív alkalmazása. (!) A regkif-ek mindig a lehető leghosszabb stringre illeszkednek. 1.6. Cserélős feladatok: sed Tesztfájl: sed_test.txt Javítás környezet alapján (minden helytelen a névelőt az -ra): Nézd meg az alábbi regkif-et a tesztfájlon! s/( +)a( +)([bcdfghjklmnpqrstyxvw][a-z]*)/\1az\2\3/gi 4

Mi a hiba? Hogy lehetne azt elérni, hogy a sor elején lévő a-t is cserélje? Az avajat rosszul van írva, javítsd sed segítségével! Nézd meg az eredeti regkif-et a javított inputon! Mit tapasztalsz? Időpont átalakítása: s/([01][0-9] 2[0-3]):([0-5][0-9])/ 1. 2/ Példa a való világból. ebből: 1 MM Reguláris kifejezések 02.14. 2 PG Lexikográfia 02.21. ezt: <li><span class="date">2007-02-14</span><a href="ea/nyeny07_ea_1.ppt"> Reguláris kifejezések</a> (MM)</li> <li><span class="date">2007-02-21</span><a href="ea/nyeny07_ea_2.ppt"> Lexikográfia</a> (PG)</li> ezzel: s/ *([0-9]*) ([^ ]*) *(.*[^ ]) *0(.).(..).*/<li><span class="date"> 2007-0\4-\5<\/span><a href="ea\/nyeny07_ea_\1.ppt">\3<\/a> (\2)<\/li>/gc A harmadik zárójelben minek van a végén a [ˆ ]? Feltéve, hogy kétjegyű sorszámok is vannak, hogy lehet második lépésben szükség esetén nullával kitölteni az első helyet? 1/6 Hogy lehet ezt egy lépésben megcsinálni? Irodalom Jeffrey E. F. Friedl: Reguláris kifejezések mesterfokon Daniel Jurafsky & James H. Martin: Speech and Language Processing HF 1. Írj reguláris kifejezést, amivel lebegőpontos számokat lehet felismerni! 2. Írj regkif-et, amivel ISO-8601 extended format (google!) szerinti dátumokat lehet felismerni! 3. Tegyél linket a neved minden előfordulására a honlapodra! Pl.: A Peti A <a href=http://digitus.itk.ppke.hu/ peti>peti</a> 5