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:

<

+Python+> txt = 'xax xbx xcx x@x' res = re.sub('x[a-z]x', '!', txt) print(res)

<

-python->

A kód végrehajtásának eredménye:

python'! ! ! 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:

pythontxt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)

print(res)

A kód végrehajtásának eredménye:

python'! ! 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:

pythontxt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)

print(res)

A kód végrehajtásának eredménye:

python'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:

pythontxt = '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:

python'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:

pythontxt = '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:

python'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:

pythontxt = '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:

python'! ! ! ! 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:

pythontxt = '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:

python'! ! ! 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:

pythontxt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)

print(res)

A kód végrehajtásának eredménye:

python'! ! ! ! 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:

pythontxt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)

print(res)

A kód végrehajtásának eredménye:

python'xx ! ! ! x123x xa3x'

Példa

Tegyük meg, hogy a betűk száma lehet nulla is:

pythontxt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)

print(res)

Ennek eredményeként ezt kapjuk:

python'! ! ! ! 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:

pythontxt = '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:

python'! x@x ! ! !'

Példa

Ha további szögletes zárójeleket kell megadnunk, akkor azokat is mindenképpen escape-eljük:

pythontxt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)

print(res)

A kód végrehajtásának eredménye:

python'! ! ! x3x'

Gyakorlati feladatok

Задание 1

Adott egy sztring:

pythontxt = '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ű.

Задание 2

Adott egy sztring:

pythontxt = '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.

Задание 3

Adott egy sztring:

pythontxt = '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ű.

Задание 4

Adott egy sztring:

pythontxt = '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ű.

Задание 5

Adott egy sztring:

pythontxt = '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ű.

Задание 6

Adott egy sztring:

pythontxt = '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.

Задание 7

Adott egy sztring:

pythontxt = '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.

Задание 8

Adott egy sztring:

pythontxt = '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.