Válas Péter honlapja

Feladatgyűjtemény a reguláris kifejezésekhez

A reguláris kifejezésekhez itt találsz oktatóvideókat.

A feladatokat tetszés szerinti nyelven és környezetben oldhatod meg. Az informatikai feladatgyűjtemények szokása szerint szándékosan nincsenek pontosan specifikálva, ahogy a való élet feladatai sem – a nyitott kérdéseket neked kell tisztáznod. Nincsenek nehézségi sorrendben. Sok esetben magad alakíthatod a nehézségi fokukat. Arról is szabadon dönthetsz, hogy a feladat mekkora részét célszerű reguláris kifejezésekkel megoldani, és mit egyszerűbb hagyományos módon.

  1. Készíts telefonszámokat ellenőrző programot! Nem a felhasználónak fogjuk előírni, hogy milyen alakban adja meg a számot, hanem a bevitt stringből egy mozdulattal eldobunk mindent, ami nem számjegy, valamint az esetleges 06 prefixet, amit sokan a szám részének hisznek, majd a maradékot ellenőrizzük (érvényes magyar telefonszám), és siker esetén csak számjegyekkel tároljuk. Készíts kétféle kimenetet a tárolt adatokhoz: az egyik emberi szemnek olvashatóan adja vissza szabványos formában (pl. (30) 123-4567), a másik egy automatikus SMS-küldő által elvárt formátumban (pl. 36301234567)!
  2. Ellenőrizd egy stringről, hogy érvényes DNS-szekvencia-e!
  3. Ellenőrizd egy stringről, hogy érvényes ISBN-szám-e! Megadhatják szóközökkel, kötőjelekkel vagy tagolatlanul is.
  4. Egy weboldalban h1, h2, h3 szintű címek vannak. Tegyél mindegyik elé horgonyt, és készíts belőlük tartalomjegyzéket a lap tetejére!
  5. Vegyél egy HTML-táblázatot, és készíts belőle tabulátorokkal határolt szöveget! Az egyszerűség kedvéért tegyük fel, hogy nincs benne colspan és rowspan, de a sorok és cellák nyitótagjeiben lehetnek formázókódok. Ha nem lehetnének, talán nem is lenne indokolt reguláris kifejezéseket használni.
  6. Egy bizonyítványban jeles (5), jó (4) stb. alakban adták meg a jegyeket. Számold ki a tanulmányi átlagot! Pótold az esetleg hiányzó szóközöket, nyitó/csukó zárójeleket!
  7. Egy táblázatban IPv4-es címek vannak, vegyesen hexadecimális és decimális alakban, és némelyikben esetleg elhagyták a csoportok vezető nulláit. Ellenőrizd az érvényességüket, és hozd egyforma alakúra őket!
  8. Készíts egy txt formátumú szöveget, amelyben http vagy https protokollal megadott URL-ek vannak!
    • Alakítsd át HTML-kódra úgy, hogy mindegyik URL linkelve legyen!
    • Bővítsd további protokollokkal (pl. alakítson át e-mail-címeket, telefonszámokat, protokollmentesen megadott URL-eket)!
    • Legyen az eredeti szövegedben egy lazán rendezett táblázat. Jelenítsd meg a linkben a megadott nevet! Gondolj a gyengénlátókra is! Pl.:
      Magyar Elektronikus Könyvtár http://mek.oszk.hu/
      Reguláris kifejezések http://64.hu/i/index.php?regex
      Természetesen a táblázatrészen kívüli más szövegrészekkel is számolni kell.
    • Válassz ki egy domaint, amit sajátnak tekintesz. Az ehhez tartozó linkek ugyanabban az ablakban nyíljanak meg, a többiek egy másikban!
  9. Készíts egy számozott felsorolást, és alakítsd át számozott HTML-listává!
  10. Egy szövegben legyenek mindenféle alakú dátumok. Pl. a hónap lehet számmal, teljesen kiírt alakban, rövidítve. Mindenféle helyesírási hibák fordulhatnak elő, pl. az évszám vagy más rész után hiányzik a pont, vagy a 2017. július 4.-én ragozott alakban hibásan van a pont (toldalék előtt elhagyjuk). A 2017. május szövegben (pl. havi összesítés) kell pont, a 2017 májusa vagy 2017 májusában szövegben az évszám után nem szabad pontnak lennie. Javítsd ki a hibákat (eldöntheted, hogy egységesíted a formátumot vagy az eredeti formátumhoz akarsz hű maradni, és csak a hibát javítod), valamint írd a dátumok után HTML-megjegyzésbe az egységesített alakjukat (pl. 20170704)! gondolj rá, hogy a 20035123 csak formailag hasonló, de nem lehet dátum, tehát nem kezelendő. A feladat ezerféle alakban megfogalmazható, korlátlanul variálható, bővíthető, egyszerűsíthető, pontosítható, bonyolítható. Készíthetsz olyan programot, amelyik végigmegy a találatokon, és mindegyikhez felajánl egy javítást, de te egy i/n választással eldöntheted, hogy kéred-e (helyesírási javításoknál ez a követendő eljárás).
  11. Keresd meg egy szövegben, hogy minden kinyitott zárójelnek van-e az adott bekezdésen belül csukópárja!
  12. A http://valasztas.hu/dyn/pv14/szavossz/hu/M01/T003/szkkiv.html lapról nyíló aloldalakon láthatóak a 2014-es országgyűlési választások Budapest III. kerületi szavazóköreinek eredményei. Ezekre milliónyi feladatot lehet kitalálni, pl.:
    • Készíts tábázatot az egyes jelöltekre szavazókörönként leadott szavazatokból!
    • Mely nemzetiségek listáira érkezett érvényes szavazat a kerületben?
    • Rendezd sorba a szavazóköröket a részvételi arány szerint!
    • Jól adták-e össze a számokat, a pártlistákra leadott szavazatok összege megegyezik-e a közétett kerületi eredménnyel?
  13. Készíts egyszerű szoftverdokumentáló programot a kedvenc programnyelvedhez! (Ez olyan, mint amikor fordítót íratnak az egyetemen. Persze, hogy száz jobbat találsz készen a neten, de érdemes eljátszani vele.)
  14. Ellenőrizz egy CSS-kódot, hogy a színt jelző tulajdonságok után érvényes hexadecimális színkód van-e! A névvel jelölt színeket hagyjuk ki az egyszerűség kedvéért, de a hexadecimális kód lehet kis- és nagybetűs, lehet háromkarakteres rövidített alak, lehet szóköz a tulajdonság és az érték között vagy nem stb. Vegyél fel egy véges készletet a vizsgált tulajdonságokból.
  15. Tervezz meg egy szabványos adatlapot! Pl. beteg kezelőlapja, növénygyűjtemény adatai, banki átutalási űrlap, forgalmi engedély, MX-rekord – a lehetőségek korlátlanok. A feladat egyszerű: ellenőrizd, hogy jól van-e kitöltve! Például a bankszámlaszám lehet 16 vagy 24 jegyű, 8 számjegyenként kötőjellel vagy anélkül.
  16. Ha nem Pythonban tanítod a programozást, akkor sajnos a gép nem fogja elvégezni helyetted a behúzások ellenőrzését, de a Python értelmezője sem végez komplett formai ellenőrzést. Írjál programot a kedvenc nyelvedhez, amelyik ellenőrzi az általad előírt formai követelményeket a kódban! Ha a diák kódja nem teljesíti a követelményt, és te szigorú vagy, akkor sajnos nem tudsz válaszolni a „miért nem működik?” kérdésére. Adhatsz hibapontokat is, és bizonyos pontszám alatt csak figyelmeztetés jár. Illetve ha egy webes űrlapon keresztül kell beadnia a feladatot, a hibásan formázott kódot a program azonnal visszadobhatja, és nem fogadja el beadottként.
  17. Hasonlíts össze két szöveget vagy programkódot! Van-e bennük a megadott karakterszámnál hosszabb egyező részlet? Ez egy plágiumellenőrző program alapja lehet.
  18. Olvasd be programmal a 2016. május 18-i középszintű informatikaérettségi forrásai közül a szinesz.txt állományt, és válaszd ki azokat a színészeket, akik csak a keresztnevüket változtatták meg!
  19. Olvasd be a 2015. május 15-i idegen nyelvű középszintű informatikaérettségi forrásai közül a film.txt állományt!
    • Gyűjtsd ki belőle a „Jancsi és Juliska” típusú, igen fantáziadús filmcímeket! Ezeket onnan ismerjük fel, hogy két nagy kezdőbetűs szó között egy „és” áll. Külön listában hozzáveheted azokat is, amelyekben a két személynév után még további szavak vannak. Próbáld megoldani ugyanezt regex nélkül is.
    • Sorold fel azokat az állatokat és más lényeket, amelyekről mese készült! („Mese…” kezdetű filmcímek.) Van, amelyiknek a címéből kimaradt a „mese” szó, de mégis idetartozik?
    • Sorold fel a filmcímekben előforduló írásjeleket!
    • Az „Ügyes vagyok, tiszta vagyok” is egy sablon. Mely címekben vannak még ismétlődő szavak?
    • Keress olyan címpárokat, amelyekben legalább két egymás melletti szó azonos alakban szerepel! (Súgás: az Iciri-piciri előfordul kötőjellel és szóközzel is, az utóbbi nyilván helyesírási hibás.)
    • Hány címben van számjegy?
  20. Oldd meg az előző két feladatot program helyett SQL-ben (pl. MySQL)! Mazochisták egy kis utánaolvasással Accessben is próbálkozhatnak.
  21. Nyisd meg szerkesztésre a Magyarország kormányfőinek listája cikket, és másold ki magadnak a wikiforrást! (Ha vizuális szerkesztőben nyílik meg, keresd meg a forrásszöveg szerkesztése opciót!) Készíts belőle egy egyszerű listát, amely csak a miniszterelnök neve, hivatali idő kezdete, hivatali idő vége adatokat tartalmazza tabulátorokkal elválasztva, az eredeti sorrendben!
  22. Az oktatóvideók oldalán látható táblázat egy saját hevenyészett wikiszerű szintaxissal készült, hogy egyszerűbb legyen kitölteni.
    • Ha a sor a th| stringgel kezdődik, és nincs benne több függóleges vonal, akkor egy több oszlopra kiterjedő fejlécsor lesz belőle (a colspan értékét a függvény paraméterként kapja meg, itt 3).
    • Ha a sor a th| stringgel kezdődik, és van benne több függóleges vonal, akkor az első vonal utáni részt a függőleges vonalak mentén szétdobja fejléccellákra (th).
    • Minden más esetben a függvény függőleges vonalakat keres, és ezek mentén szétdobja a sort normál táblázatcellákra (td).
    Ennek a pszeudotáblázatnak az első néhány sora (a link nélkül) pl. így nézhet ki:
    th|Első videó
    th|Példa|Perc|Nyelv
    Bevezetés|00:00|magyar
    Vezetéknév, keresztnév alakban felsorolt nevek vessző nélküli átírása az országnak megfelelő névsorrendben|06:14|Python
    Írd meg a táblázatot előállító függvényt! A színekkel most ne törődj.