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

Méret: px
Mutatás kezdődik a ... oldaltól:

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

Átírás

1 Tartalom Reguláris vagy szabályos kifejezések használata 1. Bevezető Bővített kifejezések (extended) Alap szintű (basic) reguláris kifejezések A grep és fontosabb kapcsolói A Perl reguláris kifejezései A PHP ereg függvénycsoportja (bővített POSIX kifejezések) A PHP preg függvénycsoportja (Perl alapú kifejezések) Bibliográfia Bevezető A reguláris kifejezések leginkább szövegfeldolgozáshoz kötött feladatok kapcsán ismertek. Röviden: egy szövegmintákat leíró nyelvet jelentenek, segítségével rendkívül könnyen oldhatóak meg keresés, helyettesítés, általában szövegek feldolgozáshoz kötődő feladatok. Bár konkrétan, mindennapi gyakorlatként először a UNIX-on kezdték használni őket jelentőségük messze túlmutat a UNIX eszközein: ma már minden modern programnyelvbe beépítették őket nyelvi vagy könyvtárak szintjén. Ha valahol egy szoftverben szövegek feldolgozását is el kell végezni, akkor szinte egyértelműen ezeket használjuk. Így általánosan programfejlesztés közben, adatbányászatban, címkéket használó nyelvekkel való munkában (XML, HTML) vagy a genetikai adatok feldolgozásában nemcsak használatosak, hanem sokszor az első számú eszközt jelentik. A reguláris kifejezésekkel a UNIX parancsaiban - történelmi okok miatt - legalább három változatban találkozunk. 1. alapszintű (basic) 2. POSIX bővített (extended) 2. Perl kompatibilis - a Perl programozási nyelvben használatos kifejezések, mai változata a Perl 5- ös verziójában jelent meg. Az alapszintű kifejezéseket a régi programokkal való kompatibilitás miatt használjuk. Ezek az alábbi Linux/Unix alatt használatos parancsok: expr, grep alapmódban, sed alapmódban. A bővített kifejezéseket az alábbi esetben használjuk: egrep vagy grep -E kapcsolóval, sed -r kapcsolóval, awk, illetve a különböző programozási nyelvekből, ahol a függvények ilyen kifejezést használnak. A Reguláris kifejezések mesterfokon című, szerző: Jeffrey Friedl, könyvtárban is megtalálható könyv kimerítően tárgyalja a reguláris kifejezéseket, beleértve a különböző programozási nyelvekben (Perl, Java vagy.net-ben) használt variánsokat. A PHP függvényei közt két reguláris kifejezés függvénycsoportot találunk, a POSIX bővített és Perl típusú kifejezéseket alkalmazó függvényeket. 2. Bővített kifejezések (extended) Jelölések: a kifejezések jelölésénél, amennyiben előfordulnak, a alábbi karaktereket használjuk: 1

2 szóköz, tabulátor, a kifejezéseket a pdf illetve html dokumentumokban színesen is kiemelem, mint: ^abc[0-9]. A kifejezésre történő illesztést így emelem ki: abc7xyz. Meghatározás: a reguláris kifejezések egy olyan nyelvet jelentenek amellyel karakterláncokban megtalálható mintákat írunk le. A minták alatt az egymásutáni karakterek egy jellegzetes sorozatát értjük. Így mintáról beszélünk, ha azt mondjuk, hogy három egymás utáni kis a betű és utána egy kettes, de akkor is, ha általánosabban fogalmazunk, mint pl.: három egymás utáni kis betűt egy számjegy követ. A mintákat karaktersorozatokban fogjuk keresni, és első megközelítésben csak az angol nyelv karakterkészletével fogunk dolgozni (gépi nyelvekben lényegében ezek fordulnak elő). Később majd külön foglalkozunk a más nyelven írt szövegek kapcsán használt mintákkal. Ha a minta megtalálható egy szövegrészben, akkor azt mondjuk, hogy a minta illeszkedik a szövegre. Az illesztés (match) fogalmával tulajdonképpen egy keresés eredményére utalunk. Pl. a fent említett minták illeszkednek a aaa2xyxaaa2klm sorozatra. Ilyen kereséskor az első illesztésnek jelentősebb szerepe lehet: sokszor csak az a cél, hogy az elsőt megtaláljuk. Bár ezzel nem fogunk foglalkozni, jó tudni, hogy a keresés véges automatákat használó karakterlánc keresés algoritmusokkal történik. Ezeket egy olyan szoftver komponens hajtja végre a leírt minták alapján amelyet reguláris kifejezés motornak nevezünk. A reguláris kifejezésben karakterek és metakarakterek találhatóak: ezek közösen határozzák meg a keresett mintát. Metekaraktereknek nevezzük azokat a karaktereket amelyek egy reguláris kifejezésben más jelentéssel bírnak, mint a karakter valódi jelenése. Például a ^ karakter amennyiben egy kifejezésben használjuk arra utal, hogy a mintának azt a pontját ahol megjelenik csak a feldolgozott karakterlánc elejére lehet illeszteni. A minta illesztése egy karakterláncra úgy történik, hogy a motor balról jobbra végigjárja a karakterláncot, és megpróbálja illeszteni a mintát. Egy ilyen feldolgozott karakterláncban külön pozíciót jelentenek a karakterek, de mellettük a karakterek közti üres karakterek is. Így például a karakterlánc legelejét nem az első karakter határozza meg, hanem az első karakter előtti üres karakter, és azt is mondjuk ab karakterek között van egy üres karakter. A következőkben úgy tárgyaljuk a reguláris kifejezéseket, hogy a feldolgozott karakterláncról feltételezzük, hogy az egy szöveges állományból jön. Azt is feltételezzük, hogy feldolgozás egy sorra terjed ki. Így a karakterláncunk végét mindig az újsor karakter előtti üres karakter jelenti. Olyan feldolgozásokról, amelyeknél egyszerre több sorban keresünk (multiline keresés) majd később beszélünk. Ilyen feldolgozást találunk majd a PHP Perl alapú függvényeinél. Ezért egyelőre azt fogjuk mondani, hogy egy szövegsorban keresünk. Egyedi karakterekre való illesztések c c karakterre illeszkedik, ha c nem metakarakter \c c karakterre illeszkedik ha c metakarakter Így például abc olyan minta amely pontosan az abc sorozatra illeszthető, és a következő láncban ez 2

3 így néz ki: xyzabcxyzabc. Az a minta bármilyen láncra illeszkedik ha található benne egy a karakter. Ha a ^ egy metakarakter, akkor jelenlétét az a betű előtt ezzel a mintával fogjuk keresni: \^a ami illeszthető az következő sor egy részsorozatára: abc^abc. A. metakarakter A pont bármely karakterre illeszkedik. A mintának az a karaktere ahol előfordul bármilyen karakterre illeszthető. A. illeszkedik akár az a, akár a b karakterekre. A.. minta az ab illetve xy - ra is illeszkedik, az a.c minta pedig azokra ahol az a és c között bármi más áll, mint abc, axc, a c. A karakter halmaz és a karakter osztály A karakter halmaz egy alternatív előfordulást feltételez: például ha a mintában arra szeretnénk utalni, hogy egy bizonyos helyen előfordulhat az a, b vagy c betű (bármelyik a három közül) akkor a karakterhalmazt jelölő metakaraktereket használjuk. Ez egy karakterlista, amely szögletes zárójelben van: [], például [abc]. Rövidíteni karaktersorozatot a - jellel lehet (amennyiben a - jel is a listában van első vagy utolsó karakternek kell tenni, a ] -t pedig elsőnek). [abc] az a vagy b vagy c karaktert jelenti [a-z] egy kisbetűt jelent [0-9] egy számjegyet jelent [-a] az a betűt és a kötőjelet jelenti, mert az itt első helyen áll Ha a lista ^ -el kezdődik, akkor a komplementer karakterhalmazt definiáljuk, [^a-z] jelentése: nem kisbetű (ha a halmazban ^ is van, akkor azt bárhová lehet írni, kivéve az első pozíciót). A metakarakterek is saját magukat jelentik egy karakterhalmazban, nem kell \ jelölést használni. Így [a.] a valódi pont vagy az a karaktereket keresi. az ab[0-9][^xyz] minta jelentése: az ab karakterek után számjegy jön, utána pedig nem következik sem x, sem y, sem z. Példáula wab6czyz sorozat egy részére illeszkedik, de a wab6xzyz -ra nem. Karakterhalmazt megadhatunk [: :] közé zárt halmaznévvel, ezek a nevek a C nyelvből ismert karakterhalmazok vagy osztályok: alnum alfanumérikus karakter; digit számjegy; punct punktuációs karakter; alpha alphabetikus csak betűk; space szóköz; blank üres karakterek: szóköz, sorköz, tabulátor; lower kisbetűk; upper nagybetűk; cntrl kontrol karakterek; print nyomtathatóak. Tehát, pl.: [[:cntrl:]] egy kontrol karaktert jelent, [[:digit:]] egy számjegyet. A teljes lista az alábbi: [:alnum:] Alphanumeric characters. [:alpha:] Alphabetic characters. [:blank:] Space or tab characters. 3

4 [:cntrl:] Control characters. [:digit:] Numeric characters. [:lower:] Lower-case alphabetic characters. [:print:] Printable characters (characters that are not control characters.) Webtechnológia, W előadásvázlat, 2007/08-II. félév [:punct:] Punctuation characters (characters that are not letter, digits, control characters, or space characters). [:space:] Space characters (such as space, tab, and formfeed, to name a few). [:upper:] Upper-case alphabetic characters. [:xdigit:] Characters that are hexadecimal digits. Csoportosítás és alternálás: ( ) és A mintában a karakterek egymás után következnek, balról jobbra, az után következő karakter sorozatokat szekvenciának nevezzük. A szekvenciákon belüli al-sorozatokat csoportosítani lehet a ( ) metakarakterekkel. Ilyenkor a csoportosított rész egy összefüggő entitást fog jelenteni. Így a x(def)y minta továbbra is a látható x,d,e,f,y karakterek sorozatát jelenti, de a kiemelt (def) részre majd külön hivatkozhatunk. A zárójellel csoportosított kifejezést, akárcsak egy egyedi karaktert atomnak nevezzük. Amennyiben egy mintában alternatív szekvenciákat akarunk definiálni, tehát vagy az egyik vagy a másik illesztését várjuk, akkor a metakaraktert használjuk az alternatívák között. ab cd jelentése: vagy az ab sorozat, vagy a cd állhat azon a helyen, a motor először az ab -t, utána a cd -et próbálja illeszteni. Például ha egy dátumban az október hónap az October, Oct. vagy 10. szövegekkel szerepelhet, akkor abban a kifejezésben ami bármelyikre illeszkedhet ezt írom: October Oct\. 10\., természetesen a teljes dátumra illeszkedő kifejezésben ez majd csoportosítva szerepel: (October Okt\. 10\.). Ismétlés, intervallum Ismétlődő karaktereket (vagy atomokat) az alábbi metakarakterekkel határozhatunk meg: *, +,? amelyeket az ismétlődő karakter után írunk a kifejezésben. Jelentésük az alábbi: * az előtte álló karakter nulla vagy akárhányszor ismétlődhet + az előtte álló karakter legalább egyszer vagy akárhányszor jelenik meg? az előtte álló karakter opcionálisan, tehát egyszer sem vagy pontosan egyszer jelenik meg Ezeket a metakaraktereket kvantoroknak is nevezzük. Látható, hogy nem pontos számú ismétlődést, határoznak meg. A a* minta olyan karakterláncokra illeszkedik amelyekben "akárhányszor" fordul elő az a karakter: tehát nulla, egy, kettő stb. Így illeszkedik az a, aa, aaa, bac karakterláncokra, de a b, c, x karakterláncokra is, mert az a ezekben is "nullászor" megvan. 4

5 Ami fontos még a reguláris kifejezés motor működésével kapcsolatban: az a* minta az alábbi láncra így illeszkedik: xyzabbbabbbaxyzaxyz, tehát az illesztés nem a második a karakteren, hanem az elsőtől lehető legtávolabbi a karakteren áll le. Ezért a * kvantort mohó kvantornak nevezzük. A.* minta olyan láncot jelöl, amiben bármely karakter akárhányszor előfordulhat: tehát az üres láncra és a nagyon hosszú, bármit tartalmazóra is illeszkedik. A * mohósága miatt óvatosan kell használni: a.*a például az első a -tól a legmesszebb levőig illeszkedik. Egy idézőjelben levő szöveg kikeresése egy nagy szövegből jellemző példa arra, amikor a mohó kvantort az első lehetséges zárulás pontján le akarjuk állítani: a "abc def" "xyz ghi" szövegben csak akkor tudunk az első idézőjel párra és a benne levő szövegre illeszteni, ha az alábbi mintát használjuk: "[^"]*" : ez olyan karakterekre alkalmazza a * ismétlést amelyek "nem idézőjelek". A + metakarakter előtt álló karakternek legalább egyszer vagy akárhányszor kell előfordulni. Akárcsak a *, ez is mohó: a legtávolabbi lehetséges illesztést keresi. Az a+ minta illeszkedik az a, aa, aaa, aaaa karaktersorokra, de olyanokra amelyekben nem fordul elő az a nem. A? előtt álló karakter opcionálisan fordul elő: a mintának az a? helyén állhat vagy nem a karakter. Például ha az Anna nevet keressük reguláris kifejezéssel, és gyanítjuk, hogy románosan egy n-el is írhatták, akkor a Ann?a kifejezést próbáljuk illeszteni. Az ismétlődést jelölő metakarakterek () -el csoportosított szekvenciákra is alkalmazhatóak (azok is atomok). Így például a ([0-9][a-z])+ kifejezés jelentése: egy számjegy és utána egy kisbetű következik, és ez ismétlődhet egymás után: de a sorozatnak legalább egyszer ott kell lennie. Pontos ismétlődést (intervallumot) a { } metakarakterekkel határozzunk meg. Az alábbi módon használjuk: {n} {n,} az előtte álló karakter pontosan n-szer fordul elő (n egész szám) az előtte álló karakter legalább n-szer de akárhányszor előfordulhat {n,m} az előtte álló karakter legalább n-szer de maximum m-szer fordul elő Így a [0-9]{7} kifejezés pontosan 7 egymásutáni számjegyre illeszkedik, a [a-z]{2,3} pedig két vagy három egymásutáni kisbetűre. Horgonyok A horgonyok segítségével meghatározhatjuk, hogy a minta a szövegnek csak bizonyos helyére illeszkedjen. A ^ metakarakter a sor elejére utal, a $ pedig a sor végére. Pontosabban: ^ a sor elején, 5

6 $ a sor végén található üres karakterláncot jelentik. A ^abc minta olyan sorokra illeszkedik amelyeknek elején abc lánc áll, a \.$ azokra amelyeknek végén egy pont van. Az ^[a-z]{3}$ sorban pontosan 3 kisbetű van és semmi egyéb. A ^$ kifejezés az üres sort jelenti (a sor elején és végén levő üres karakterlánc egymás mellett van). A visszautalás Sokszor olyan mintákat keresünk, amelyeknél egy előforduló karakter szekvencia megismétlődik a keresett mintában még egyszer. Ilyenkor az első előfordulás helyét megjelöljük, erre a () -el való csoportosítást használjuk, és a \n (n egész szám, tehát \1, \2, stb.) jelöléssel utalunk rá vissza a kifejezésben. Az ([0-9])cd\1 jelentése: egy számjegy, utána cd majd ugyanaz a számjegy még egyszer. Vagy: "a sor végén két ugyanolyan kisbetű mint a sor elején levő kettő, köztük pedig akármi" mintát így írjuk le: ^([a-z]{2}).*\1$. A \1, \2, \3,... jelőlés a zárójelezett részek számára utal balról jobbra: a következő: ([a-z])([a-z])\2\1 minta ilyen láncokra illeszkedik: abbc, xyyx, cddc. A \ karakter további jelentései A reguláris kifejezések terminológiájában "szavakat alkotó" karakterek azok, amelyekből változónevek, azonosítók épülhetnek fel a C vagy más programozási nyelvekben. Ez pontosan az alábbi halmazt jelenti: [a-za-z0-9_] (betűk, számjegyek és a _ ). Ezeket fogjuk a továbbiakban word karaktereknek nevezni. Az alábbi metakarakter szekvenciák azt segítik elő, hogy azonosítókat, kulcsszavakat keressünk ki könnyen egy szövegből. Így a \ bizonyos esetekben, ha utána az alábbi karakterek vannak, az alábbi jelentéssel bír: \b szóhatár (boundary): egy word karakter és egy nem word karakter közti üres lánc \B nem szóhatár: két word karakter közti üres lánc \> üres karakterlánc a szóvégén \< üres karakterlánc a szó elején \w szó (word) alkotó karakter: ugyanaz mint: [a-za-z0-9_] \W nem szó alkotó karakter Az következő szövegben: Alkalmas alma hatalma a \Balma\B kifejezés az első alma-ra, \balma\b a másodikra, \Balma\b pedig a harmadikra illeszkedik. *** Összefoglalva a bővített (extended) reguláris kifejezés metakarakterei: 6

7 Megnevezés Metakarakter Jelentés Bármely karakter. bármilyen karakterre illeszkedik Kvantorok * az ismétlődés akárhányszor (lehet 0 is) Intervallum {n} pont n-szer? egyszer vagy egyszer sem fodul elő + legalább egyszer, de akárhányszor {n,} {n,m} legalább n-szer, de akárhányszor legalább n-szer, de legfennebb m-szer Horgony ^ a sor eleje előtt levő üres sztringre illeszkedik Csoportosító (...) csoportosítás Alternálás alternálás $ a sor végén levő üres sztringre illeszkedik Karakter osztály [ ] karakter osztály vagy halmaz kijelölő Visszautalás \n visszautal egy ()-lel csoportosított sorozatra: \1 az elsőre, \2 a másodikra, stb. Vissza tört sorozatok \b, \B stb. szavak közti határokat jelöl 3. Alap szintű (basic) reguláris kifejezések Néhány hagyományos program esetében használjuk őket: expr, grep, sed (a sed és grep esetében lehet bővítetteket is használni). Ezeknél a kifejezéseknél a?, +, {,, (, és ) helyett a fordított törtvonallal bevezetett változataikat kell használni tehát: \?, \+, \{, \, \(, és \) -t írunk. Így pl:. a "legalább egy a betű" minta így fog kinézni: a\+, az "a vagy pontosan 3 b" pedig a\ b\{3\} ; az a minta amelyben megjelöljük visszautalás miatt a 3 egymás utáni kisbetűt pedig így: \([a-z]\{3\}\). Ezekben nem használhatóak a \ szóhatár szekvenciák. Alap szintű kifejezések modern nyelvekben, mint PHP,.NET, Java már nem használhatóak. 4. A grep és fontosabb kapcsolói A reguláris kifejezéseket legkönnyebben a UNIX grep nevű parancsával lehet gyakorolni, ezért röviden bemutatjuk ezt a parancsot. Meghívás: grep kapcsolók minta [ állomány... ] egrep kapcsolók minta [ állomány... ] 7

8 A grep kikeresi a bementi szöveges állományokból azokat a sorokat amelyekre a megadott minta illeszkedik, és kilistázza őket különböző opciókkal. Hasznossága miatt az egyik leggyakrabban használt program a UNIX rendszereken. egrep formában, vagy -E kapcsolóval használja a bővített reguláris kifejezéseket. A -P kapcsolóval Perl alapú kifejezéseket használ. A color=auto opcióval indítva a sorok listázásakor színessel írja ki az illesztés helyét, ha a terminál ezt támogatja. Ezt beállíthatjuk egy környezeti változóval is, ehhez írjuk az alábbi parancsot a.bashrc állományunk végére: export GREP_OPTIONS='--color=auto' Az egrep igaz értéket ad vissza a $? -be ha talált legalább egy illesztést, és hamisat ha nem talált: ez felhasználható if szerkezetekben, ha feltételként egy grep-et futtatunk. Fontosabb kapcsolók: -c megszámolja a találatok számát, ilyenkor nem írja ki a találatokat. -E bővített kifejezésekkel dolgozik -e minta a mintát így is meg lehet adni: feltétlenül így kell megadni, ha a minta jellel kezdődik -P Perl kifejezésekkel dolgozik -f file A mintát egy fájl egymás utáni soraiból veszi. Minden minta találatát keresi. -i kis és nagybetű közti különbség nem számít -L ha több állományban keres, kiírja azok neveit amelyben nincs meg a minta -l ha több állományban keres, kiírja azok neveit amelyben megvan a minta -m szám szám darab találat után leáll, szám egész szám -n a találat elé kiírja annak sorszámát -o csak az illesztést vagy illesztéseket írja ki, több illesztés esetén külön sorba -q nem ír ki semmit. A visszatérési érték jelzi csak, hogy talált vagy nem -r, -R rekurzívan végigjár minden könyvtárat a megadott könyvtár alatt -s nem ír ki hiba üzeneteket azokról az állományokról amelyeket nem tud elolvasni -v inverz kiírás: azokat a sorokat írja ki amelyekben nem volt illesztés -w csak azokat a karakterláncokat tekinti találatoknak amelyek teljes szót alkotnak (elválasztó van a két szélükön) -x csak azokat tekinti találatnak amelyek teljes sort alkotnak 5. A Perl reguláris kifejezései A Perl nyelv igen erősen támaszkodik a reguláris kifejezésekre, ezek nyelvi szinten épülnek a Perlbe(az illesztés és karaktersor csere az operátorok közt vannak). A nyelv 5-ös verziójában jelentek meg olyan metakarakterek, amelyek lényegesen lerövidíthetik a kifejezések írását, ugyanakkor 8

9 bonyolultabb keresést is megengednek. A Perl valamennyi előzőleg bemutatott, bővített kifejezést felépítő metakaraktert ismer. Ezen kívül még jó néhányat definiál. A Perl a reguláris kifejezéseket két határoló karakter közt adja meg. Ez alapértelmezésben a /, de bármi egyébre ki lehet cserélni. Gyakran használják erre a % jelet is. Egy Perl reguláris kifejezés tehát így néz ki: /a?b+/, ahol a két / jel határoló. De írhatjuk így is ha az célszerűbb: %a?b+%. A kifejezés után egy módosító karaktereket lehet írni, ezek jelentése: i kisbetű/nagybetű nem számít m multiline: több soron történő illesztés (ilyenkor a ^ és $ illeszkedik a belső \n -ekre is) s single line: egy sornak tekint akár több sort is:. illeszkedik a \n -re, ami a normál illesztésnél nem történik meg x a mintában levő whitespace karaktereket nem veszi figyelembe az illesztő motor tehát a: /a?b+/i illeszkedik a 'abb' -re és 'ABb' -re is. Ha pedig így adjuk meg: /a?b+/im akkor az illesztést multiline módban keresi. A Perl metakarakterei közül a legfontosabbak az alábbiak: Metakarakter Jelentése \d és \D A \d egy számjegyet jelent, ekvivalens a [0-9] kifejezéssel. A \D ennek komplementer kifejezése, jelentése: nem számjegy \s és \S A \s whitespace karaktert jelent, a \S nem whitespace karaktert \w és \W "word" karakterek, azaz [0-9a-zA-Z_], a \W a komplementer halmaz \b és \B szóhatár és nem szóhatár \A A szöveg legelején, függetlenül a multiline üzemmódtól \Z A szöveg legvégén, függetlenül a multiline üzemmódtól, illeszkedik akkor is ha utána még van a szöveg végén egy \n karakter \z A szöveg legvégén, semmilyen karakter nem lehet utána, \n sem A feltételes illesztések megoldására több metakarakter kombinációt használ a Perl, ezek közül megemlítjük: Metakarakter kombináció Előre tekintő metakarakter kombinációk: Jelentése (?=) Ellenőrzi, hogy az illesztés után egy másik reguláris kifejezés illeszkedjék a szövegre. Ez a második illesztés nem fog beletartozni az "illesztésbe", hanem csak vezérli annak helyét. A mohó kvantorok könnyen megállíthatóak ennek segítségével. Pl. /abc(?=de)/ 9

10 arra az abc -re illeszkedik amelyik után de jön Webtechnológia, előadásvázlat, 2007/08-II. félév (?!) Az előző ellentettje: ellenőrzi, hogy az illesztés után ne legyen jelen egy olyan karaktersor amelyre a második kifejezés illeszkedik: /abc(?!de)/ Arra az abc -re illeszkedik amelyik után nem jön de sorozat. Vissza tekintő metakarakter kombinációk: (?<=) Ellenőrzi az illesztés előtti karaktersort: annak illeszkednie kell a z'r=jelben megadott regul'ris kifejezésre: /(?<=de)abc/ olyan abc -re illeszkedik amelyik előtt ott van a de karaktersor. (?<!) Az előző feltétel negatív megfogalmazása: /(?<!de)abc/ olyan abc -re illeszkedik amelyik előtt nem illeszthető a de reguláris kifejezés. A fenti feltételes ellenőrzésből egyszerre több is használható a keresett sztring előtt és után. Használatát részletesen lásd itt. 6. A PHP ereg függvénycsoportja (bővített POSIX kifejezések) Ez a függvénycsoport a POSIX szabványnak megfelelő bővített reguláris kifejezéseket használ. Az alábbi függvények léteznek: ereg_replace helyettesítést végez az illesztés helyén ereg ellenőrzi, hogy van-e illesztés eregi_replace helyettesítést végez az illesztés helyén, kis/nagybetű nem számít eregi ellenőrzi, hogy van-e illesztés, kis/nagybetű nem számít split felvág egy sztringet tömb elemekre, úgy hogy a vágópontokat reguláris kifejezéssel keresi meg spliti ugyanaz a művelet, kis/nagybetű nem számít Két függvényt nézünk meg részletesen példaként. Az ereg teljes prototípusa: int ereg ( string $pattern, string $string [, array &$regs ] ) Az első paraméter a reguláris kifejezés, a második a sztring amelyre alkalmazzuk. Opcionálisan egy harmadik paraméterben visszatéríti az illesztés helyeit ha vannak (illesztett sztring részek egy tömbben, regs[0] a teljes illesztés, regs[1] az első zárójellel megjelölt illesztés, stb.). A visszatérített érték sikeres illesztés esetén az illesztett sztring hossza, sikertelen esetén logikai false. Pl. ha egy sztringben egy űrlapról telefonszámot írtak be, melynek alakja azt így tesztelhetjük : if ( isset ( $_POST['telefon']) ) { $telefon = trim ( $_POST['telefon'] ); //a trim levágja a szóközöket if ( ereg ( '^[0-9]{4}-[0-9]{3}-[0-9]{3}$', $telefon ) ) { //ellenőrzés sikeres, feldolgozás }else{ //hibás bevitel 10

11 } } Egy helyesen begépelt címet így ellenőrizhetünk: if (!eregi ('^([a-z0-9_] \- \.)+@(([a-z0-9_] \-)+\.)+[a-z]{2,4}$', $ )) { die("hibás cím!"); }else { //feldolgozás } Másik hasznos függvény a split, prototípusa: array split ( string $pattern, string $string [, int $limit ] ) A függvény a $pattern minta szerint felvágja a $sztringet, a darabokat egy tömbben adja vissza. A $limit paraméterrel meg lehet adni, hogy csak bizonyos számú sztringet adjon vissza. Pl. az alábbi hívás a több punktuációs karakter szerint vágja fel a sztringet: $s='a,b.c;d!e'; $a = split ('[.,;!]', $s); print_r ($a); a kiírt eredmény: Array ( [0] => a [1] => b [2] => c [3] => d [4] => e ) 7. A PHP preg függvénycsoportja (Perl alapú kifejezések) A Perl alapú függvények csoportja az alábbi: preg_grep visszaadja azokat a tömbelemeket, amelyek illeszkednek a mintára preg_match_all reguláris kifejezés teljeskörű illesztését végzi preg_match reguláris kifejezést illeszt a megadott szövegre preg_quote reguláris kifejezés metakaraktereit literálissá változtatja preg_replace_callback reguláris kifejezés alapján keres és a megadott függvényt meghívva végzi a cserét preg_replace reguláris kifejezés alapján keres és cserél preg_split sztringet darabol A Perl alapú függvények többet tudnak mint az egyszerű POSIX alapúak, ezért ezeket érdemes használni. Nézzük pl. a preg_match prototípusát; int preg_match ( string $pattern, string $subject [, array $matches [, int $flags ]] ) Két paramétere kötelező, ennek alapján teszteli, hogy van-e illesztés. Ha a $matches tömböt is megadjuk, akkor a kézikönyv szerint: "A $matches[0] tartalmazza azt a szövegrészt, ami a teljes 11

12 mintára illeszkedett, és a további elemek ($matches[1] és így tovább) azokat, amelyek a tömbindex szerinti "gyűjtő" részmintákra illeszkedtek". Ha a $flags paraméternek PREG_OFFSET_CAPTURE értéket adunk, akkor: "Minden egyezéshez az egyezés kezdőpozícióját is visszaadja az eredményben. Ez maga után vonja, hogy a visszaadott tömb minden eleme olyan tömb lesz, amelynek a 0. indexe az illeszkedő szöveget tartalmazza, míg az 1. indexen levő elem ennek a szövegen belüli kezdőpozícióját". A preg_replace függvény az illeszkedések helyét cseréli le egy adott sztringgel. A cserék száma megadható. A csere sztringben \1, \2,... visszautalások használhatóak az illesztett sztringre. Részletes leírását lásd a kézikönyvben itt. Az alábbi szkript például a HTML elemek kezdő és zárócímkéit szűri ki teljesen egy HTML szövegből: $s = <<< EOF <h1>cím</h1> <p>paragrafus</p> <div> <p>pargrafus2</p> </div> EOF; $s = preg_replace('/<\/?[^>]+>/','',$s,-1); //olyan sztringet helyettesít amelyik < -el kezdődik, utána opcionálisan egy /, utána "nem >" karakterek jönnek (legalább egy, de akárhány) és végül a záró > print $s; 8. Bibliográfia Könyv Reguláris kifejezések mesterfokon, szerző: Jeffrey Friedl, Kossuth-O'Reilly. Könyvtárban. Fejezetek a PHP kézikönyvben 1. POSIX alapú reguláris kifejezés függvények (angol) 2. Perl alapú reguláris kifejezés függvények (magyarra fordított) Gyakorolni Gyakorolni UNIX alatt a grep programmal, a tantárgy honlapján a oldalon Reguláris kifejezések cím alatt levő szkriptekkel lehet. 12

13 Néhány egyszerű bevezető feladat gyakorláshoz itt található. 13

Reguláris vagy szabályos kifejezések

Reguláris vagy szabályos kifejezések Reguláris vagy szabályos kifejezések 1. Bevezető...1 2. Bővített kifejezések (extended)...2 Egyedi karakterekre való illesztések...2 A. metakarakter...3 A karakter halmaz és a karakter osztály...3 Csoportosítás

Részletesebben

Reguláris vagy szabályos kifejezések

Reguláris vagy szabályos kifejezések Reguláris vagy szabályos kifejezések 1.Bevezető...1 2.Bővített kifejezések...2 2.1.Bővített kifejezések felépítése...3 2.1.1.Egyedi karakterekre való illesztések...3 2.1.2.A. metakarakter...3 2.1.3.A karakter

Részletesebben

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 8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába A gyakorlat célja: 1. A gyakorlat célja a reguláris kifejezések használatának megismerése. A grep parancs használatának elsajátítása

Részletesebben

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 8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába A gyakorlat célja: 1. A gyakorlat célja a reguláris kifejezések használatának megismerése. A grep parancs használatának elsajátítása

Részletesebben

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 8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába A gyakorlat célja 1. A reguláris kifejezések használatának megismerése. Az egrep parancs használatának elsajátítása 2. További

Részletesebben

BASH SCRIPT SHELL JEGYZETEK

BASH SCRIPT SHELL JEGYZETEK BASH SCRIPT SHELL JEGYZETEK 1 TARTALOM Paraméterek... 4 Változók... 4 Környezeti változók... 4 Szűrők... 4 grep... 4 sed... 5 cut... 5 head, tail... 5 Reguláris kifejezések... 6 *... 6 +... 6?... 6 {m,n}...

Részletesebben

Operációs rendszerek 1.

Operációs rendszerek 1. Operációs rendszerek 1. Szűrőprogramok Balla Tibor balla.tibor@inf.unideb.hu Standard bemenet és kimenet Standard bemenet (stdin,0) Standard kimenet (stdout,1) Standard hibakimenet (stderr,2) Átirányítás

Részletesebben

Reguláris kifejezések 1.

Reguláris kifejezések 1. 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

Részletesebben

A sed folyamszerkesztő

A sed folyamszerkesztő A sed folyamszerkesztő 1. Bevezető...1 2. A sed parancssora...1 3. A sed működése...2 4. A sed parancsai...3 A címek megadása...3 Gyakran használt parancsok...4 Ritkábban használt parancsok...7 A hold

Részletesebben

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

Operációs Rendszerek II. labor. 2. alkalom Operációs Rendszerek II. labor 2. alkalom Mai témák (e)grep Shell programozás (részletesebben, példákon keresztül) grep Alapvető működés: mintákat keres a bemeneti csatorna (STDIN vagy fájl) soraiban,

Részletesebben

Operációs rendszerek gyakorlat

Operációs rendszerek gyakorlat Operációs rendszerek gyakorlat 10. Gyakorlat Vakulya Gergely Az alapértelmezett változó - I. Sok függvény és vezérlési szerkezet alapértelmezett változóval tömörebbé tehető $_ while, , print, stb. 2

Részletesebben

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.

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. Függvények 1.Függvények...1 1.1.A függvény deníció szintaxisa... 1..Függvények érték visszatérítése...3 1.3.Környezettel kapcsolatos kérdések...4 1.4.Lokális változók használata...4 1.5.Rekurzív hívások...5.kód

Részletesebben

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

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II. 7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II. A gyakorlat célja: 1. A shell vezérlő szerkezetei használatának gyakorlása. A használt vezérlő szerkezetek: if/else/fi, for, while while, select, case,

Részletesebben

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

AWK programozás, minták, vezérlési szerkezetek 10 AWK programozás, minták, vezérlési szerkezetek AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa

Részletesebben

Flex tutorial. Dévai Gergely

Flex tutorial. Dévai Gergely Flex tutorial Dévai Gergely A Flex (Fast Lexical Analyser) egy lexikáliselemz -generátor: reguláris kifejezések sorozatából egy C/C++ programot generál, ami szövegfájlokat képes lexikai elemek sorozatára

Részletesebben

További vezérlő valamint számításokat megkönnyítő szerkezetek

További vezérlő valamint számításokat megkönnyítő szerkezetek Tartalom További vezérlő valamint számításokat megkönnyítő szerkezetek 1. A case szerkezet...1 2. A select szerkezet...3 3. Aritmetikai kiértékelés: számítások a (( )) szerkezettel...4 4. A C stílusú for

Részletesebben

AWK programozás Bevezetés

AWK programozás Bevezetés 09 AWK programozás Bevezetés AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa és feldolgozhatóvá

Részletesebben

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

AWK programozás, minták, vezérlési szerkezetek 10 AWK programozás, minták, vezérlési szerkezetek AWK futtatási módok AWK parancs, közvetlen programkódmegadás: awk 'PROGRAMKÓD' FILE példa: ls -l awk '{print $1, $5}' a programkód helyére minden indentálás

Részletesebben

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

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II. 7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II. A gyakorlat célja: 1. A shell vezérlő szerkezetei használatának gyakorlása. A használt vezérlő szerkezetek: if/else/fi, for, while while,

Részletesebben

A sed folyamszerkesztő

A sed folyamszerkesztő A sed folyamszerkesztő 1.Bevezető...1 2.A sed parancssora...1 3.A sed működése...2 4.A sed parancsai...3 4.1.A címek megadása...3 4.2.Gyakran használt parancsok...5 4.3.Ritkábban használt parancsok...8

Részletesebben

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

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >> I. Alapok Interaktív shell-ben vagy shell-scriptben megadott karaktersorozat feldolgozásakor az első lépés a szavakra tördelés. A szavakra tördelés a következő metakarakterek mentén zajlik: & ; ( ) < >

Részletesebben

Szkriptnyelvek. 1. UNIX shell

Szkriptnyelvek. 1. UNIX shell Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek

Részletesebben

További vezérlő valamint számításokat megkönnyítő szerkezetek

További vezérlő valamint számításokat megkönnyítő szerkezetek Tartalom További vezérlő valamint számításokat megkönnyítő szerkezetek 1.A case szerkezet...1 2.A select szerkezet...3 3.Aritmetikai kiértékelés: számítások a (( )) szerkezettel...4 4.A C stílusú for ciklus...6

Részletesebben

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

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - bevezetés Operációs rendszerek 10. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 1 / 15 Reguláris

Részletesebben

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

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat Formális nyelvek a gyakorlatban Formális nyelvek, 1 gyakorlat Segédanyagok Célja: A programozási nyelvek szintaxisának leírására használatos eszközök, módszerek bemutatása Fogalmak: BNF, szabály, levezethető,

Részletesebben

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik

Részletesebben

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

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu 2010-2011 2. Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed Windisch Gergely windisch.gergely@nik.uni-obuda.hu 2010-2011 2. félév Reguláris kifejezések Reguláris kifejezésekkel lehet keresni egy

Részletesebben

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

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő

Részletesebben

Programozás I gyakorlat

Programozás I gyakorlat Programozás I. - 9. gyakorlat Sztringkezelés, mutatók Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 2, 2009 1 tar@dcs.vein.hu Tar

Részletesebben

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

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED BASH recap, reguláris kifejezések Operációs rendszerek 9. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor

Részletesebben

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

S z á m í t ó g é p e s a l a p i s m e r e t e k S z á m í t ó g é p e s a l a p i s m e r e t e k 7. előadás Ami eddig volt Számítógépek architektúrája Alapvető alkotóelemek Hardver elemek Szoftver Gépi kódtól az operációs rendszerig Unix alapok Ami

Részletesebben

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

Szövegek C++ -ban, a string osztály Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string

Részletesebben

Forráskód formázási szabályok

Forráskód formázási szabályok Forráskód formázási szabályok Írta: Halmai Csongor, Webcenter Bt. A php és html kódrészletek Ugyanazon fájlon belül nem szerepelhet php kód és html tartalom. E kettő különválasztására smarty-t vagy más

Részletesebben

HTML ÉS PHP ŐSZI FÉLÉV

HTML ÉS PHP ŐSZI FÉLÉV 1 HTML ÉS PHP ŐSZI FÉLÉV Szövegek kezelése PHP-val 2 Szövegek tárolása Az UTF-8 kicsit részletesebben 3 Az UTF-8 minden karaktert 1-6 bájton tárol Ez összesen 1 111 998 különböző karakter tárolását teszi

Részletesebben

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

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Reguláris kifejezések - alapok, BASH Operációs rendszerek 9. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor

Részletesebben

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

Szűrők Reguláris kifejezések, AWK 02 Szűrők Reguláris kifejezések, AWK A félév hátralévő részének célja Szöveges fájlok tartalmának a kezelése, manipulációja, automatizált módosítása Reguláris kifejezések Komplex mintaillesztés megadása

Részletesebben

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10. Összetett programozási tételek Sorozathoz sorozatot relő feladatokkal foglalkozunk. A bemenő sorozatot le kell másolni, s közben az elemekre vonatkozó átalakításokat lehet végezni rajta: Input : n N 0,

Részletesebben

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.

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. 9. Gyakorlat AWK 2 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. Ha az n-et elhagyjuk, akkor az m-ediktől

Részletesebben

Unix-Linux alapok II. gyakorlatvezető: Lutár Patrícia

Unix-Linux alapok II. gyakorlatvezető: Lutár Patrícia Unix-Linux alapok II. gyakorlatvezető: Lutár Patrícia Ez a dokumentum az órán bemutatott alapparancsoknak egy vázlatos áttekintése. A parancsokhoz tartozó kapcsolók/opciók (flagek) felsorolása nem teljes.

Részletesebben

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 programozás: minták, vezérlési szerkezetek, tömbök, beépített függvények, reguláris kifejezések 02 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 Egyszerű szöveges szűrő grep csak a mintához illeszkedő sorokat írja

Részletesebben

Rekurzió. Dr. Iványi Péter

Rekurzió. Dr. Iványi Péter Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(

Részletesebben

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

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK Mérési Utasítás Linux/Unix jogosultságok és fájlok kezelése Linux fájlrendszerek és jogosultságok Linux alatt, az egyes fájlokhoz való hozzáférések szabályozása érdekében a fájlokhoz tulajdonost, csoportot

Részletesebben

Regionális forduló november 19.

Regionális forduló november 19. Regionális forduló 2016. november 19. 9-10. osztályosok feladata Feladat Írjatok Markdown HTML konvertert! A markdown egy nagyon népszerű, nyílt forráskódú projektekben gyakran használt, jól olvasható

Részletesebben

dr.xlsx A programról Szövegműveletekhez használható függvények

dr.xlsx A programról Szövegműveletekhez használható függvények dr.xlsx A programról A CD struktúrája A CD 9 munkafüzetben mutatja be a Microsoft Excel 2003, 2007 és 2010 függvényeit. Az egyes munkafüzetek a "tartalom" munkafüzetből érhetők el a munkafüzet nevére kattintással.

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

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

Alapozás. Scriptek, scriptnyelvek. Dinamikus és statikus típusrendszerek. Miért érdemes használni? Perl Alapozás Scriptnyelvek jellemz i és összevetése statikus típusrendszer nyelvekkel Példák scriptnyelvekre Adatszerkezetek Reguláris kifejezések alapjai Scriptek, scriptnyelvek Mit nevezhetünk scriptnek?

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

1. Alapok. #!/bin/bash

1. Alapok. #!/bin/bash 1. oldal 1.1. A programfájlok szerkezete 1. Alapok A bash programok tulajnképpen egyszerű szöveges fájlok, amelyeket bármely szövegszerkesztő programmal megírhatunk. Alapvetően ugyanazokat a at használhatjuk

Részletesebben

Lekérdezések az SQL SELECT utasítással

Lekérdezések az SQL SELECT utasítással Lekérdezések az SQL SELECT utasítással Az SQL SELECT utasítás lehetőségei Vetítés Kiválasztás 1. tábla 1. tábla Összekapcsolás 1. tábla 2. tábla Elemi SELECT utasítások SELECT * {[DISTINCT] column expression

Részletesebben

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

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk. JSON tutorial Készítette: Cyber Zero Web: www.cyberzero.tk E-mail: cyberzero@freemail.hu Msn: cyberzero@mailpont.hu Skype: cyberzero_cz Fb: https://www.facebook.com/cyberzero.cz BEVEZETÉS: A JSON (JavaScript

Részletesebben

WEB PROGRAMOZÁS 3.ELŐADÁS. Űrlapok

WEB PROGRAMOZÁS 3.ELŐADÁS. Űrlapok WEB PROGRAMOZÁS 3.ELŐADÁS Űrlapok 2 Globális és környezeti változók Globális és környezeti változók 3 A globális változók azok a változók, amelyeket a program legfelső szintjén, azaz a függvényeken kívül

Részletesebben

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18 C# Nyelvi Elemei Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei 2013 1 / 18 Tartalomjegyzék 1 Object 2 Típusok 3 String 4 RegEx Tóth Zsolt (Miskolci Egyetem) C# Nyelvi

Részletesebben

Regionális forduló november 19.

Regionális forduló november 19. Regionális forduló 2016. november 19. 11-13. osztályosok feladata Feladat Írjatok Markdown HTML konvertert! A markdown egy nagyon népszerű, nyílt forráskódú projektekben gyakran használt, jól olvasható

Részletesebben

A szabályos kifejezések használata

A szabályos kifejezések használata 18. ÓRA A szabályos kifejezések használata A szövegek vizsgálatának és elemzésének nagyszerû módja a szabályos kifejezések (regular expressions) használata. Ezek lehetõvé teszik, hogy egy karakterláncon

Részletesebben

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk függvények ismétlése lista fogalma, használata Game of Life program (listák használatának gyakorlása) listák másolása (alap szintű, teljes körű) Reversi 2 Emlékeztető a függvények lényegében mini-programok,

Részletesebben

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

Programozás alapjai. 5. előadás 5. előadás Wagner György Általános Informatikai Tanszék Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk

Részletesebben

Operációs rendszerek gyak.

Operációs rendszerek gyak. Operációs rendszerek gyak. AWK programozás Hirling Dominik Szegedi Tudományegyetem AWK AWK: a pattern scanning and processing language mintaelemző-és feldolgozó nyelv bármilyen szövegből minták alapján

Részletesebben

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók Haskell 1. Alapok tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók elég jól elkerülhetők így a mellékhatások könnyebben

Részletesebben

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Bánsághi Anna 2014 Bánsághi Anna 1 of 68 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva! A PL/SQL alapelemei Karakterkészlet Az angol ABC kis- és nagybetűi: a-z, A-Z Számjegyek: 0-9 Egyéb karakterek: ( ) + - * / < > =! ~ ^ ; :. ' @ %, " # $ & _ { }? [ ] Szóköz, tabulátor, kocsivissza A kis-

Részletesebben

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év). 1. fejezet AWK 1.1. Szűrési feladatok 1. Készítsen awk szkriptet, ami kiírja egy állomány leghosszabb szavát. 2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét,

Részletesebben

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

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa: 1. Tétel Az állomány két sort tartalmaz. Az első sorában egy nem nulla természetes szám van, n-el jelöljük (5

Részletesebben

Formális nyelvek és automaták

Formális nyelvek és automaták Formális nyelvek és automaták Nagy Sára gyakorlatai alapján Készítette: Nagy Krisztián 2. gyakorlat Ismétlés: Megjegyzés: Az ismétlés egy része nem szerepel a dokumentumban, mivel lényegében a teljes 1.

Részletesebben

Komputeralgebra rendszerek

Komputeralgebra rendszerek Komputeralgebra rendszerek III. Változók Czirbusz Sándor czirbusz@gmail.com Komputeralgebra Tanszék ELTE Informatika Kar 2009-2010 ősz Index I 1 Szimbolikus konstansok kezelés A konstansok Nevek levédése

Részletesebben

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Python Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt

Részletesebben

32. A Knuth-Morris-Pratt algoritmus

32. A Knuth-Morris-Pratt algoritmus 32. A Knuth-Morris-Pratt algoritmus A nyers erőt használó egyszerű mintaillesztés műveletigénye legrosszabb esetben m*n-es volt. A Knuth-Morris-Pratt algoritmus (KMP-vel rövidítjük) egyike azon mintaillesztő

Részletesebben

Komputeralgebra rendszerek

Komputeralgebra rendszerek Komputeralgebra rendszerek III. Változók Czirbusz Sándor czirbusz@gmail.com Komputeralgebra Tanszék ELTE Informatika Kar 2009-2010 ősz Index I 1 Szimbolikus konstansok kezelés A konstansok Nevek levédése

Részletesebben

Operációs rendszerek 1.

Operációs rendszerek 1. Operációs rendszerek 1. BASH programozás szintaktikai alapok Balla Tibor balla.tibor@inf.unideb.hu BASH UNIX rendszerhéj GNU Project Bourne again - born again SH Irodalom Bash Reference Manual (http://www.gnu.org/software/bash/manual/bashref.html)

Részletesebben

BASH script programozás II. Vezérlési szerkezetek

BASH script programozás II. Vezérlési szerkezetek 06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van

Részletesebben

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

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport 10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)

Részletesebben

A legfontosabb DOS parancsok

A legfontosabb DOS parancsok A legfontosabb DOS parancsok A DOS parancsok általános formája: KULCSSZÓ paraméterek Az utasítások akár kis-, akár nagybetűkkel is írhatók, a DOS nem tesz köztük különbséget. A kulcsszó és az első paraméter

Részletesebben

Bevezetés a programozásba

Bevezetés a programozásba Bevezetés a programozásba 1. Előadás Bevezetés, kifejezések http://digitus.itk.ppke.hu/~flugi/ Egyre precízebb A programozás természete Hozzál krumplit! Hozzál egy kiló krumplit! Hozzál egy kiló krumplit

Részletesebben

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. szeptember 27. Háromszög szerkeszthet ségének ellen rzése ANSI C (C89) megvalósítás #i n c l u d e i n t main ( v

Részletesebben

Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás. Az awk

Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás. Az awk Az awk 1. Bevezető...1 2. Rekordok és mezők...2 3. Az awk programozási nyelv...3 Az awk minta...3 Az utasítások...4 A változók...5 Belső változók...5 Konstansok...6 Operátorok...7 Programszervező utasítások...8

Részletesebben

az Excel for Windows programban

az Excel for Windows programban az Excel for Windows táblázatkezelőblázatkezel programban Mit nevezünk nk képletnek? A táblt blázatkezelő programok nagy előnye, hogy meggyorsítj tják és könnyebbé teszik a felhasználó számára a számítási

Részletesebben

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás A tárgy órái Előadás hetente (St101) csüt. 8:15 Bécsi Tamás C elmélet Ajánlott irodalom Dennis Ritchie: A C programozási nyelv Gyakorlat hetente

Részletesebben

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

Írásjelek helyes szedése. Szabó Csaba. Mondatvégi írásjelek. Központozás. Kötőjelfélék. Szabó Csaba november 18. 2008. november 18. A magyar nyelvben a mondatok modalitásának kifejezésére mondatvégi et használunk. Kijelentő mondat esetén pontot (.). A magyar nyelvben a mondatok modalitásának kifejezésére mondatvégi

Részletesebben

INFORMATIKA javítókulcs 2016

INFORMATIKA javítókulcs 2016 INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.

Részletesebben

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1 Halmazok 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 2 A fejezet legfontosabb elemei Halmaz megadási módjai Halmazok közti műveletek (metszet,

Részletesebben

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

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

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 Beépített változók (paraméterezés): $# - paraméterek száma $1...9 - az adott paraméter értéke $0 - az adott héjprogram neve $* - az összes paraméter egyben Idézőjelek típusai: ' ' - belső szöveg stringként

Részletesebben

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS 2.ELŐADÁS A VB programozási nyelv Az Excel programozása 2 A VB programozási nyelv Adattípusok Adatok kezelése Vezérlőszerkezetek Adattípusok és műveletek Egész adattípusok

Részletesebben

Tartalomjegyzék. I. rész Az elsõ lépések

Tartalomjegyzék. I. rész Az elsõ lépések Tartalomjegyzék Bevezetõ I. rész Az elsõ lépések 1. óra PHP: személyes honlaptól a portálig..... 3 Mi a PHP?............................................ 4 A PHP fejlõdése.......................................

Részletesebben

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

Kifejezések. Kozsik Tamás. December 11, 2016 Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},

Részletesebben

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök Dr. Bécsi Tamás 4. Előadás A?: operátor Nézzük meg a következő kifejezést: if (a>b) z=a; else z=b; Ez felírható

Részletesebben

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

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14. Informatika 1 2011 Második előadás, vezérlési szerkezetek Szabó Adrienn 2011. szeptember 14. Tartalom Algoritmusok, vezérlési szerkezetek If - else: elágazás While ciklus For ciklus Egyszerű típusok Összetett

Részletesebben

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző

Részletesebben

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

I. Felzárkoztató Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

I. Felzárkoztató Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK Mérési Utasítás Alapvető Linux/UNIX parancsok A terminál. A Linux és a UNIX, multi taszkos, több felhasználós rendszerek. A több feladat végrehajtásához egy (vagy akár több) felhasználó több terminálon

Részletesebben

Webprogramozás szakkör

Webprogramozás szakkör Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o Programozás

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 8. gyakorlat Fájlkezelés Surányi Márton PPKE-ITK 2010.11.02. Fájlkezelés C++-ban C++-ban van lehet ségünk fájlok kezelésére. Itt már tényleges fájlokkal dolgozunk, nem pedig

Részletesebben

Gyakorló feladatok Gyakorló feladatok

Gyakorló feladatok Gyakorló feladatok Gyakorló feladatok előző foglalkozás összefoglalása, gyakorlató feladatok a feltételes elágazásra, a while ciklusra, és sokminden másra amit eddig tanultunk Változók elnevezése a változók nevét a programozó

Részletesebben

1. Jelölje meg az összes igaz állítást a következők közül!

1. Jelölje meg az összes igaz állítást a következők közül! 1. Jelölje meg az összes igaz állítást a következők közül! a) A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag. b) A do while ciklusban a ciklusmag után egy kilépési feltétel van.

Részletesebben

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

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1 OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Különféle élőlények egy túlélési versenyen vesznek részt. A lények egy pályán haladnak végig, ahol váltakozó terep viszonyok vannak.

Részletesebben

Egyszerű programozási tételek

Egyszerű programozási tételek Egyszerű programozási tételek 2. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 15. Sergyán (OE NIK) AAO 02 2011. szeptember 15.

Részletesebben

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

Kifejezések. Kozsik Tamás. December 11, 2016 Kifejezések Kozsik Tamás December 11, 2016 Kifejezés versus utasítás C/C++: kifejezés plusz pontosvessző: utasítás kiértékeli a kifejezést jellemzően: mellékhatása is van például: értékadás Ada: n = 5;

Részletesebben

Delphi programozás I.

Delphi programozás I. Delphi programozás I. Konzol alkalmazások készítése Delphiben A Delphi konzol alkalmazása (console application) olyan 32 bites program, amely nem grafikus felületen, hanem egy szöveges konzol ablakban

Részletesebben

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS 2015-2016 Fájlkezelés PHP-ben Fájlok és könyvtárak kezelése 2 A PHP a Javascript-hez hasonlóan, nem képes a felhasználó merevlemezén

Részletesebben

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1 2. Rekurzió Egy objektum definícióját rekurzívnak nevezünk, ha a definíció tartalmazza a definiálandó objektumot. Egy P eljárást (vagy függvényt) rekurzívnak nevezünk, ha P utasításrészében előfordul magának

Részletesebben