Karakterkészletek a Python reguláris kifejezéseiben
A \d és \w karaktercsoportok nem
nagyon rugalmasak. Még egy ilyen egyszerű feladat,
mint a minden betű megtalálása, de nem számjegy -
sem oldható meg velük. Ilyen feladatokhoz
szögletes zárójeleket kell használni,
amelyek a 'vagy' műveletet jelentik.
A szögletes zárójelek egy karaktert helyettesítenek,
bármelyiket, amely a zárójelben szerepel.
Például így: x[abc]x - azt mondjuk,
hogy a széleken x betűknek kell állniuk,
és középen - egy karakter: vagy 'a',
vagy 'b', vagy 'c'.
A szögletes zárójelek után írhatunk
ismétlési operátorokat. Például így:
x[abc]+x - azt mondjuk, hogy az x-ek
között bármennyi 'a', 'b' és 'c' karakter lehet -
bármilyen kombinációban.
Nem csak felsorolhatunk karaktereket, hanem
karaktercsoportokat is létrehozhatunk, ha két
karakter közé kötőjelet írunk. Például így:
[a-d] - megkapjuk az összes karaktert
'a'-tól 'd'-ig.
Nézzünk példákat.
Példa
Ebben a példában a keresési minta így néz ki:
az x-ek között bármely betű 'a'-tól
'z'-ig:
A kód végrehajtásának eredménye:
'! ! ! x@x'
Példa
Ebben a példában a keresési minta így néz ki:
az x-ek között bármely betű 'a'-tól
'k'-ig:
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'! ! xmx x@x'
Példa
Ebben a példában a keresési minta így néz ki:
az x-ek között bármely betű 'A'-tól
'Z'-ig:
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'xax ! xcx x@x'
Példa
Ebben a példában a keresési minta így néz ki:
az x-ek között bármely számjegy 0-tól
9-ig:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'xax ! ! ! x@x'
Példa
Ebben a példában a keresési minta így néz ki:
az x-ek között bármely számjegy 3-tól
7-ig:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'xax x1x ! ! x@x'
Példa
Ebben a példában a keresési minta így néz ki:
az x-ek között bármely betű 'a'-tól
'z'-ig vagy számjegy 1-től
9-ig:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'! ! ! ! x@x'
Példa
Ebben a példában a keresési minta így néz ki:
az x-ek között bármely betű 'a'-tól
'z'-ig vagy betű 'A'-tól
'Z'-ig:
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'! ! ! x5x x@x'
Példa
Ebben a példában a keresési minta így néz ki:
az x-ek között bármely betű 'a'-tól
'z'-ig vagy 1,
2 számjegyek:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'! ! ! ! x3x'
Példa
Ebben a példában a keresési minta így néz ki:
az x-ek között 'a'-tól
'z'-ig terjedő betűk 1 vagy
több mennyiségben:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'xx ! ! ! x123x xa3x'
Példa
Tegyük meg, hogy a betűk száma lehet nulla is:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
Ennek eredményeként ezt kapjuk:
'! ! ! ! x123x xa3x'
Példa
A szögletes zárójelek között escape-elt karakterek is megadhatók. Keressük meg a betűk és számjegyek nullával vagy többel ismétlődő sorozatát:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'! x@x ! ! !'
Példa
Ha további szögletes zárójeleket kell megadnunk, akkor azokat is mindenképpen escape-eljük:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'! ! ! x3x'
Gyakorlati feladatok
Adott egy sztring:
txt = 'aba aea aca aza axa'
Írj reguláris kifejezést a
következő minta szerint: a széleken 'a' betűk
állnak, és közöttük - 'b',
'e' vagy 'x' betű.
Adott egy sztring:
txt = 'a1a a3a a7a a9a aba'
Írj reguláris kifejezést a
következő minta szerint: a széleken 'a' betűk
állnak, és közöttük - 3-tól
6-ig terjedő számjegy.
Adott egy sztring:
txt = 'aba aea afa aha aga'
Írj reguláris kifejezést a
következő minta szerint: a széleken 'a' betűk
állnak, és közöttük - 'a'-tól
'g'-ig terjedő betű.
Adott egy sztring:
txt = 'aba aea afa aha aga'
Írj reguláris kifejezést a
következő minta szerint: a széleken 'a' betűk
állnak, és közöttük - 'a'-tól
'f'-ig és 'j'-tól
'z'-ig terjedő betű.
Adott egy sztring:
txt = 'aAa aea aEa aJa a3a'
Írj reguláris kifejezést a
következő minta szerint: a széleken 'a' betűk
állnak, és közöttük - 'a'-tól
'f'-ig és 'A'-tól
'D'-ig terjedő betű.
Adott egy sztring:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Írj reguláris kifejezést a
következő minta szerint: a széleken 'a' betűk
állnak, és közöttük - kis
latin betűk, anélkül, hogy érintenénk a többit.
Adott egy sztring:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Írj reguláris kifejezést a
következő minta szerint: a széleken 'a' betűk
állnak, és közöttük - kis és
nagy latin betűk, anélkül, hogy érintenénk
a többit.
Adott egy sztring:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Írj reguláris kifejezést a
következő minta szerint: a széleken 'a' betűk
állnak, és közöttük - kis
latin betűk és számjegyek, anélkül, hogy érintenénk
a többit.