Ú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:

pythonimport 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:

pythonres = 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 !:

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

pythonres = re.sub('x.x', '!', 'xax eee')
print(res) # vypíše '! eee'
Задание 1

Daný reťazec:

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

Задание 2

Daný reťazec:

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

Задание 3

Daný reťazec:

pythontxt = 'aba aca aea abba adca abea'

Napíšte regulárny výraz, ktorý nájde reťazce 'abba' a 'abea', bez zachytenia 'adca'.