Úvod do regulárnych výrazov v Pythone
Regulárne výrazy sú príkazy pre zložité vyhľadávanie a nahradzovanie (alebo jednoducho vyhľadávanie). Umožňujú robiť veľmi zaujímavé veci, ale, žiaľ, sú pomerne ťažké na osvojenie.
Ak chceme začať pracovať s regulárnymi výrazmi
v Pythone, musíme importovať špeciálny
modul re:
import re
Modul re obsahuje metódy
určené na prácu s regulárnymi
výrazmi. Regulárny výraz
predstavuje súbor príkazov a pozostáva
z dvoch typov symbolov: z tých, ktoré
označujú samé seba a zo symbolov-príkazov,
ktoré sa nazývajú špeciálne symboly.
Zoznámenie s regulárnymi výrazmi je lepšie
začať na príklade metódy sub, ktorý
sa používa na nahradzovanie v reťazci. Prvým
parametrom metóda prijíma čo meniť,
druhým - na čo meniť. V treťom parametri
uvádzame reťazec, v ktorom potrebujeme urobiť
nahradenie. Vo štvrtom voliteľnom parametri
nastavujeme počet nahradení. Najjednoduchšie
nahradenie pomocou tejto metódy bude
vyzerať takto:
res = re.sub('a', '!', 'bab')
print(res) # vypíše 'b!b'
Ako ste si všimli, v regulárnom výraze
písmená označujú samé seba. To isté
platí aj pre číslice. Nahraďme číslicu
2 na !:
res = re.sub('2', '!', '12abc3')
print(res) # vypíše '1!abc3'
No bodka je špeciálnym symbolom
a označuje akýkoľvek symbol. V nasledujúcom
príklade nájdime podreťazec podľa takéhoto
vzoru: písmeno 'x', potom akýkoľvek
symbol, potom opäť písmeno 'x':
res = re.sub('x.x', '!', 'xax eee')
print(res) # vypíše '! eee'
Daný reťazec:
txt = 'ahb acb aeb aeeb adcb axeb'
Napíšte regulárny výraz, ktorý nájde reťazce
'ahb', 'acb', 'aeb'
podľa vzoru: písmeno 'a', akýkoľvek
symbol, písmeno 'b'.
Daný reťazec:
txt = 'aba aca aea abba adca abea'
Napíšte regulárny výraz, ktorý nájde reťazce
'abba', 'adca', 'abea'
podľa vzoru: písmeno 'a', 2
akýchkoľvek symbolov, písmeno 'a'.
Daný reťazec:
txt = 'aba aca aea abba adca abea'
Napíšte regulárny výraz, ktorý nájde reťazce
'abba' a 'abea', bez zachytenia
'adca'.