Karaktercsoportok a Python reguláris kifejezéseiben
Léteznek speciális parancsok, amelyek
lehetővé teszik egész karaktercsoportok
kiválasztását. A \d parancs a
0 és 9 közötti számjegyet
jelenti. A \w parancs
számjegyet, latin betűt vagy aláhúzás
jelet jelöl. A \s parancs
szóközt vagy szóköz karaktert jelöl: szóköz,
soremelés, tabulátor. A parancs értéke
megfordítható nagy betűvel: például ha
\d - számjegy, akkor
\D - nem számjegy.
Példa
Keressük meg az összes számjegyet:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'! !! !!!'
Példa
Az ismétlési operátorok a parancsok-csoportokat
egésznek tekintik, vagyis a csoportosító zárójelek
nincsenek szükségesek. A következő példában a keresési minta
így néz ki: 0 és
9 közötti számjegy egyszer vagy többször:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'! ! ! abc @@@'
Példa
A következő példában a keresési minta így néz ki:
bármi egyszer vagy többször,
de nem 0 és 9 közötti számjegy:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'123!3!'
Példa
Ebben a példában a keresési minta így néz ki: szóköz karakter egyszer:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'1!12!123!abc!@@@'
Példa
Ebben a példában a keresési minta így néz ki:
NEM szóköz karakter egyszer vagy többször.
Minden szóközökkel elválasztott
reszszöveg '!'-ra lesz cserélve:
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'! ! ! ! !'
Példa
Ebben a példában a keresési minta így néz ki:
számjegy vagy betű egyszer vagy többször.
Minden számjegyekből
és betűkből álló reszszöveg '!'-ra lesz cserélve:
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'! ! ! ! @@@'
Példa
Ebben a példában a keresési minta így néz ki:
NEM számjegy és NEM betű egyszer vagy többször.
E definíció szerint a mi
esetünkben a '@@@' és az összes szóköz
(ők sem számjegyek vagy betűk) esik bele.
Figyelj arra, hogy a végén egy
'!' van - ebbe alakult át a
' @@@' sztring - az eleji szóközzel:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
A kód végrehajtásának eredménye:
'1!12!123!Abc!'
Gyakorlati feladatok
Adott egy sztring:
txt = 'a1a a2a a3a a4a a5a aba aca'
Írj reguláris kifejezést, amely megtalálja azokat a sztringeket,
amelyekben a széleken 'a' betűk állnak,
közöttük egy számjegy.
Adott egy sztring:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
Írj reguláris kifejezést, amely megtalálja azokat a sztringeket,
amelyekben a széleken 'a' betűk állnak,
közöttük tetszőleges számú számjegy.
Adott egy sztring:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
Írj reguláris kifejezést, amely megtalálja azokat a sztringeket,
amelyekben a széleken 'a' betűk állnak,
közöttük tetszőleges számú számjegy (beleértve
a nulla számjegyet is, azaz a
'aa' sztring).
Adott egy sztring:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
Írj reguláris kifejezést, amely megtalálja a következő
formájú sztringeket: a széleken 'a'
és 'b' betűk állnak, közöttük -
nem szám és nem szóköz.
Adott egy sztring:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
Írj reguláris kifejezést, amely megtalálja a következő
formájú sztringeket: a széleken 'a'
és 'b' betűk állnak, közöttük -
nem betű, nem számjegy és nem szóköz.
Adott egy sztring:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
Írj reguláris kifejezést, amely lecseréli az összes
szóközt '!'-ra.