Informatika2-2014/teszt

A MathWikiből
(Változatok közti eltérés)
66. sor: 66. sor:
 
  (['"])[^\1]*\1
 
  (['"])[^\1]*\1
  
 
+
[[http://www.tutorialspoint.com/python/python_reg_expressions.htm Python regexp összefoglaló]]
{| 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., 18:27-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: néggyel osztható 2-jegyű szám

[02468][048]|[13579][26]

Feladat: szökőév

([1-9][0-9])(0[48]|[2468][048]|[13579][26])|(([2468][048]|[13579][26])00)


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! Megoldás

\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: 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
)
"""

Feladat: '-jelek vagy "-jelek közé zárt szöveg

(['"])[^\1]*\1

[Python regexp összefoglaló]

Személyes eszközök