Informatika2-2014/teszt
4. sor: | 4. sor: | ||
'''Feladat:''' nagy betűkkel írt római számok | '''Feladat:''' nagy betűkkel írt római számok | ||
+ | |||
+ | Évezred: <code>M{0,4}</code>, évszázad: <code>CM|CD|D?C{0,3}</code>, évtized: <code>XC|XL|L?X{0,3}</code>, év: <code>IX|IV|V?I{0,3}</code>. Akkor mégis mi a hiba az alábbi megoldással? | ||
+ | |||
+ | M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}) | ||
+ | |||
+ | Hogy illeszkedik az üres sztringre is! | ||
\b(?=[MDCLXVI])M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\b | \b(?=[MDCLXVI])M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\b | ||
50. sor: | 56. sor: | ||
""" | """ | ||
</python> | </python> | ||
+ | |||
+ | |||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! scope="col" | Karakter | ||
+ | ! scope="col" | Használat ("minta" >> pl. "erre illeszkedik", !! "erre nem illeszkedik") | ||
+ | |- | ||
+ | | | Bármely karakter | ||
+ | | | Az adott karaktert jelöli, ha más jelentése nincs. "ba" >> "ba" | ||
+ | |- | ||
+ | | | . | ||
+ | | | Bármely karaktert jelöli a sortörésjel kivételével. „.l.m” >> „elem” „alom” !! „idom” | ||
+ | |- | ||
+ | | | ^ | ||
+ | | | Sor (vagy a sztring) elejére illeszkedik. "^Azt" | ||
+ | |- | ||
+ | | | $ | ||
+ | | | Sor vagy a sztring végére illeszkedik. "azt.$". | ||
+ | |||
+ | A $ önmagában a bekezdés végére illeszkedik. Így a bekezdéstörések megkereshetők és kicserélhetők. | ||
+ | |- | ||
+ | | | * | ||
+ | | | A "*" jel előtti atom 0 vagy több előfordulását keresi. "pil*a" >> "pia", "pila", "pilla",... | ||
+ | |- | ||
+ | | | + | ||
+ | | | A „+” jel előtti atom 1 vagy több előfordulását keresi. "na+" >> "na", "naa", naaa",... | ||
+ | |- | ||
+ | | | ? | ||
+ | | | A „?” jel előtti atom 0 vagy 1 előfordulását keresi. "ezt?" >> "ez, "ezt" | ||
+ | |- | ||
+ | | | \ | ||
+ | | | (eszkép) a "\" jel után írt speciális karakterek normál karakterként és nem reguláris kifejezésként lesznek felismerve. "fa\." >> "fa." !! "fal" | ||
+ | |- | ||
+ | | | \n | ||
+ | | | A Shift+Enter használatával beszúrt sortörést jelöli. Egy sortörés „bekezdés vége” jelre való lecseréléséhez a '''Keresett szöveg''' és a '''Csere erre''' mezőkbe írja be a '''\n''' értéket, majd hajtson végre egy „Keresés és csere” funkciót. | ||
+ | |||
+ | A \n a '''Keresés''' mezőben a sortörést jelenti, amelyet a Shift+Enter billentyűkombinációval vittek be. | ||
+ | |||
+ | A \n a '''Csere erre''' mezőben a bekezdésjelet jelenti, amelyet az Enter vagy a Return billentyűvel vihet be. | ||
+ | |- | ||
+ | | | \t | ||
+ | | | Egy tabulátort jelöl. Ez a kifejezés a '''Csere erre''' mezőben is használható. | ||
+ | |- | ||
+ | | | \b | ||
+ | | | Illeszkedés szóhatárra. Például a „\bkönyv” megtalálja a „könyvjelző” szót, de a „tankönyv” szót nem, míg a „könyv\b” megtalálja a „tankönyv” szót de a „könyvjelző” szót nem. A „könyv” szót önmagában mindkét keresőkifejezés megtalálja. | ||
+ | |- | ||
+ | | | ^$ | ||
+ | | | Egy üres bekezdést keres meg. | ||
+ | |- | ||
+ | | | ^. | ||
+ | | | Egy bekezdés első karakterét keresi meg. | ||
+ | |- | ||
+ | | | & vagy $0 | ||
+ | | | Cserekor a '''Keresett szöveg''' mezőben megadott keresési feltétel által talált karakterláncot hozzáadja a '''Csere erre''' mezőhöz. | ||
+ | |||
+ | Ha például az "ablak" szót írja a '''Keresett szöveg''' mezőbe és a "&kerete" szót pedig a '''Csere erre''' mezőbe, akkor az ablak szó az "ablak kerete" kifejezésre cserélődik. | ||
+ | |||
+ | Egy "&" karakter '''Csere erre''' mezőbe való beírásával módosíthatók a keresési feltétel által talált karakterlánc '''Attribútum''' vagy '''Formátum''' értékei. | ||
+ | |- | ||
+ | | | [abc123] | ||
+ | | | A zárójelek között lévő karakterek egyikét jelöli. | ||
+ | |- | ||
+ | | | [a-e] | ||
+ | | | Az a és e között elhelyezkedő betűk bármelyikét jelöli a kezdő és a záró karaktert is beleértve. | ||
+ | |||
+ | A karakterek a kódszámuk szerint vannak rendezve. | ||
+ | |- | ||
+ | | | [a-eh-x] | ||
+ | | | Az a és e, valamint a h és x között elhelyezkedő betűk bármelyikét jelöli. | ||
+ | |- | ||
+ | | | [^a-s] | ||
+ | | | Az a és s között nem elhelyezkedő betűk bármelyikét jelöli. | ||
+ | |- | ||
+ | | | \uXXXX | ||
+ | |||
+ | \UXXXXXXXX | ||
+ | | | A négyjegyű hexadecimális Unicode kódjának (XXXX) megfelelő karaktert jelöli. | ||
+ | |||
+ | Ritka karakterekhez létezik egy külön változó nagy U-val és nyolc hexadecimális számjeggyel (XXXXXXXX). | ||
+ | |||
+ | Bizonyos szimbólum-betűkészletek esetén a speciális karakterek kódja a használt betűkészlettől függ A kódok megtekintéséhez válassza a '''Beszúrás - Különleges karakter''' lehetőséget. | ||
+ | |- | ||
+ | | | | | ||
+ | | | Megkeresi a „|” jel előtti és utáni kifejezést. Például az „ez|az” megtalálja az „ez” és az ”az” szót egyaránt. | ||
+ | |- | ||
+ | | | {2} | ||
+ | | | Megadja, hogy a nyitó zárójel előtti karakter hányszor szerepel. Például a „hal{2}” megtalálja és kijelöli a „hall” szót. | ||
+ | |- | ||
+ | | | {1,2} | ||
+ | | | Megadja, hogy a nyitó zárójel előtti karakter minimum és maximum hányszor szerepelhet. Például a „hal{1,2}” megtalálja és kijelöli a „hal” és a „hall” szót is. | ||
+ | |- | ||
+ | | | {1,} | ||
+ | | | Megadja, hogy a nyitó zárójel előtti karakter legalább hányszor szerepelhet. Például a "hal{2,}" megtalálja a "hall", a "halll" és a "hallllllllllll" szót is. | ||
+ | |- | ||
+ | | | ( ) | ||
+ | | | A '''Keresett szöveg''' mezőbe írja be a következőt: | ||
+ | |||
+ | A zárójelben lévő karaktereket hivatkozásként adja meg. Ezután az aktuális kifejezésben az első hivatkozásra a "\1", a másodikra a "\2" karakterlánc megadásával hivatkozhat. | ||
+ | |||
+ | Ha például a szöveg tartalmazza a 13487889-es számot, és a (8)7\1\1 reguláris kifejezés használatával keres, a program a „8788”-at találja meg. | ||
+ | |||
+ | A kifejezések csoportosításához használhat zárójeleket is, például az "a(bc)?d" megtalálja az "ad" és az "abcd". | ||
+ | |||
+ | A '''Csere erre''' mezőben: | ||
+ | |||
+ | Használja a $ (dollár) jelet a \ (fordított perjel) helyett a hivatkozások lecserélésére. Használja a $0 karakterláncot a teljes megtalált karakterlánc lecserélésére. | ||
+ | |- | ||
+ | | | [:alpha:] | ||
+ | | | Egy betű karaktert jelöl. Használja az [:alpha:]+ kifejezést egy darab megtalálásához. | ||
+ | |- | ||
+ | | | [:digit:] | ||
+ | | | Egy szám karaktert jelöl. Használja a [:digit:]+ kifejezést egy darab megtalálásához. | ||
+ | |- | ||
+ | | | [:alnum:] | ||
+ | | | Egy alfanumerikus karaktert jelöl ([:alpha:] és [:digit:]). | ||
+ | |- | ||
+ | | | [:space:] | ||
+ | | | Szóköz karaktert jelöl (de nem a többi üres karaktert). | ||
+ | |- | ||
+ | | | [:print:] | ||
+ | | | Egy nyomtatható karaktert jelöl. | ||
+ | |- | ||
+ | | | [:cntrl:] | ||
+ | | | Nem nyomtatható karaktert jelöl. | ||
+ | |- | ||
+ | | | [:lower:] | ||
+ | | | Kisbetűs karaktereket jelöl, ha a '''Beállítások''' részben ki van választva a '''Kis- és nagybetűk megkülönböztetése''' lehetőség. | ||
+ | |- | ||
+ | | | [:upper:] | ||
+ | | | Nagybetűs karaktereket jelöl, ha a '''Beállítások''' részben ki van választva a '''Kis- és nagybetűk megkülönböztetése''' lehetőség. | ||
+ | |} | ||
+ | |||
+ | == Példák == | ||
+ | |||
+ | e([:digit:])? – megtalálja az „e”-t és az azt követő nulla vagy egy számjegyet. Jelenleg az összes névvel rendelkező karakterosztályt (például a [:digit:]-et) zárójelbe kell tenni. | ||
+ | |||
+ | ^([:digit:])$ – megtalálja azokat a sorokat vagy cellákat, amelyekben pontosan egy számjegy van. | ||
+ | |||
+ | A keresési kifejezések kombinálásával összetett keresések alakíthatók ki. | ||
+ | |||
+ | === Olyan bekezdés megtalálása, amelyben egyedül csak három számjegy van. === | ||
+ | |||
+ | <code>^[:digit:]{3}$</code> | ||
+ | |||
+ | • a ^ azt jelenti, hogy a találatnak a bekezdés elején kell lennie, | ||
+ | |||
+ | • a [:digit:] bármilyen számjegyre illeszkedik, | ||
+ | |||
+ | • a {3} azt jelenti, hogy a „[:digit:]” pontosan háromszor fordulhat elő, | ||
+ | |||
+ | • a $ azt jelenti, hogy a találatnak a bekezdés végén kell lennie. |
A lap 2014. március 4., 13:59-kori változata
Példák reguláris kifejezésekre
Írjunk olyan reguláris kifejezéset, mely illeszkedik az alábbiakban megadott mintára!
Feladat: nagy betűkkel írt római számok
Évezred: M{0,4}
, évszázad: CM|CD|D?C{0,3}
, évtized: XC|XL|L?X{0,3}
, év: IX|IV|V?I{0,3}
. Akkor mégis mi a hiba az alábbi megoldással?
M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})
Hogy illeszkedik az üres sztringre is!
\b(?=[MDCLXVI])M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\b
Feladat: pozitív egészek, esetleg a sokjegyű számok hármasával csoportosítva vannak és a csoportok szóközzel elválasztva
[1-9](\d{0,2}( \d{3})+|\d*)
Ugyanez szóhatárok közt:
\b[1-9](\d{0,2}( \d{3})+|\d*)\b
Feladat: HTML-kódban hexadecimális színkód (3 vagy 6 hexa szám)
([0-9A-Fa-f]{3}){1,2}
Feladat: szökőév
([1-9][0-9])(0[48]|[2468][048]|[13579][26])|(([2468][048]|[13579][26])00)
Feladat: a yyyy-mm-dd formátum szerinti érvényes dátum az 1600-as évektől
"""
(
(1[6-9]\d\d|[2-9]\d{3}) # tetszőleges év
-(0[13456789]|1[0-2]) # nem február
-(0[1-9]|[12]\d|30) # 1-30
|
(1[6-9]\d\d|[2-9]\d{3}) # tetszőleges év
-02-(0[1-9]|1\d|2[0-8]) # február
|
(1[6-9]\d\d|[2-9]\d{3}) # tetszőleges év
-(0[13578]|1[02]) # 31-napos hónap
-31 # 31
|
( ###### szökőév
(1[6-9]|[2-9]\d) # első két jegy
(0[48]|[2468][048]|[13579][26]) # 4-gyel osztható nem évszázad
| # vagy
(([2468][048]|[13579][26])00) # 400-zal osztható
) ###### szökőév eddig
-02-29 # február 29
)
"""
Karakter | Használat ("minta" >> pl. "erre illeszkedik", | "erre nem illeszkedik") |
---|---|---|
Bármely karakter | Az adott karaktert jelöli, ha más jelentése nincs. "ba" >> "ba" | |
. | Bármely karaktert jelöli a sortörésjel kivételével. „.l.m” >> „elem” „alom” !! „idom” | |
^ | Sor (vagy a sztring) elejére illeszkedik. "^Azt" | |
$ | Sor vagy a sztring végére illeszkedik. "azt.$".
A $ önmagában a bekezdés végére illeszkedik. Így a bekezdéstörések megkereshetők és kicserélhetők. | |
* | A "*" jel előtti atom 0 vagy több előfordulását keresi. "pil*a" >> "pia", "pila", "pilla",... | |
+ | A „+” jel előtti atom 1 vagy több előfordulását keresi. "na+" >> "na", "naa", naaa",... | |
? | A „?” jel előtti atom 0 vagy 1 előfordulását keresi. "ezt?" >> "ez, "ezt" | |
\ | (eszkép) a "\" jel után írt speciális karakterek normál karakterként és nem reguláris kifejezésként lesznek felismerve. "fa\." >> "fa." !! "fal" | |
\n | A Shift+Enter használatával beszúrt sortörést jelöli. Egy sortörés „bekezdés vége” jelre való lecseréléséhez a Keresett szöveg és a Csere erre mezőkbe írja be a \n értéket, majd hajtson végre egy „Keresés és csere” funkciót.
A \n a Keresés mezőben a sortörést jelenti, amelyet a Shift+Enter billentyűkombinációval vittek be. A \n a Csere erre mezőben a bekezdésjelet jelenti, amelyet az Enter vagy a Return billentyűvel vihet be. | |
\t | Egy tabulátort jelöl. Ez a kifejezés a Csere erre mezőben is használható. | |
\b | Illeszkedés szóhatárra. Például a „\bkönyv” megtalálja a „könyvjelző” szót, de a „tankönyv” szót nem, míg a „könyv\b” megtalálja a „tankönyv” szót de a „könyvjelző” szót nem. A „könyv” szót önmagában mindkét keresőkifejezés megtalálja. | |
^$ | Egy üres bekezdést keres meg. | |
^. | Egy bekezdés első karakterét keresi meg. | |
& vagy $0 | Cserekor a Keresett szöveg mezőben megadott keresési feltétel által talált karakterláncot hozzáadja a Csere erre mezőhöz.
Ha például az "ablak" szót írja a Keresett szöveg mezőbe és a "&kerete" szót pedig a Csere erre mezőbe, akkor az ablak szó az "ablak kerete" kifejezésre cserélődik. Egy "&" karakter Csere erre mezőbe való beírásával módosíthatók a keresési feltétel által talált karakterlánc Attribútum vagy Formátum értékei. | |
[abc123] | A zárójelek között lévő karakterek egyikét jelöli. | |
[a-e] | Az a és e között elhelyezkedő betűk bármelyikét jelöli a kezdő és a záró karaktert is beleértve.
A karakterek a kódszámuk szerint vannak rendezve. | |
[a-eh-x] | Az a és e, valamint a h és x között elhelyezkedő betűk bármelyikét jelöli. | |
[^a-s] | Az a és s között nem elhelyezkedő betűk bármelyikét jelöli. | |
\uXXXX
\UXXXXXXXX |
A négyjegyű hexadecimális Unicode kódjának (XXXX) megfelelő karaktert jelöli.
Ritka karakterekhez létezik egy külön változó nagy U-val és nyolc hexadecimális számjeggyel (XXXXXXXX). Bizonyos szimbólum-betűkészletek esetén a speciális karakterek kódja a használt betűkészlettől függ A kódok megtekintéséhez válassza a Beszúrás - Különleges karakter lehetőséget. | |
| | Megkeresi a „|” jel előtti és utáni kifejezést. Például az „ez|az” megtalálja az „ez” és az ”az” szót egyaránt. | |
{2} | Megadja, hogy a nyitó zárójel előtti karakter hányszor szerepel. Például a „hal{2}” megtalálja és kijelöli a „hall” szót. | |
{1,2} | Megadja, hogy a nyitó zárójel előtti karakter minimum és maximum hányszor szerepelhet. Például a „hal{1,2}” megtalálja és kijelöli a „hal” és a „hall” szót is. | |
{1,} | Megadja, hogy a nyitó zárójel előtti karakter legalább hányszor szerepelhet. Például a "hal{2,}" megtalálja a "hall", a "halll" és a "hallllllllllll" szót is. | |
( ) | A Keresett szöveg mezőbe írja be a következőt:
A zárójelben lévő karaktereket hivatkozásként adja meg. Ezután az aktuális kifejezésben az első hivatkozásra a "\1", a másodikra a "\2" karakterlánc megadásával hivatkozhat. Ha például a szöveg tartalmazza a 13487889-es számot, és a (8)7\1\1 reguláris kifejezés használatával keres, a program a „8788”-at találja meg. A kifejezések csoportosításához használhat zárójeleket is, például az "a(bc)?d" megtalálja az "ad" és az "abcd". A Csere erre mezőben: Használja a $ (dollár) jelet a \ (fordított perjel) helyett a hivatkozások lecserélésére. Használja a $0 karakterláncot a teljes megtalált karakterlánc lecserélésére. | |
[:alpha:] | Egy betű karaktert jelöl. Használja az [:alpha:]+ kifejezést egy darab megtalálásához. | |
[:digit:] | Egy szám karaktert jelöl. Használja a [:digit:]+ kifejezést egy darab megtalálásához. | |
[:alnum:] | Egy alfanumerikus karaktert jelöl ([:alpha:] és [:digit:]). | |
[:space:] | Szóköz karaktert jelöl (de nem a többi üres karaktert). | |
[:print:] | Egy nyomtatható karaktert jelöl. | |
[:cntrl:] | Nem nyomtatható karaktert jelöl. | |
[:lower:] | Kisbetűs karaktereket jelöl, ha a Beállítások részben ki van választva a Kis- és nagybetűk megkülönböztetése lehetőség. | |
[:upper:] | Nagybetűs karaktereket jelöl, ha a Beállítások részben ki van választva a Kis- és nagybetűk megkülönböztetése lehetőség. |
Példák
e([:digit:])? – megtalálja az „e”-t és az azt követő nulla vagy egy számjegyet. Jelenleg az összes névvel rendelkező karakterosztályt (például a [:digit:]-et) zárójelbe kell tenni.
^([:digit:])$ – megtalálja azokat a sorokat vagy cellákat, amelyekben pontosan egy számjegy van.
A keresési kifejezések kombinálásával összetett keresések alakíthatók ki.
Olyan bekezdés megtalálása, amelyben egyedül csak három számjegy van.
^[:digit:]{3}$
• a ^ azt jelenti, hogy a találatnak a bekezdés elején kell lennie,
• a [:digit:] bármilyen számjegyre illeszkedik,
• a {3} azt jelenti, hogy a „[:digit:]” pontosan háromszor fordulhat elő,
• a $ azt jelenti, hogy a találatnak a bekezdés végén kell lennie.