Úvod do regulárních výrazů v Pythonu

Regulární výrazy jsou příkazy pro složité vyhledávání a nahrazování (nebo prostě vyhledávání). Umožňují dělat velmi zajímavé věci, ale bohužel jsou poměrně náročné na osvojení.

Pro začátek práce s regulárními výrazy v Pythonu potřebujeme importovat speciální modul re:

pythonimport re

Modul re zahrnuje metody určené pro práci s regulárními výrazy. Regulární výraz představuje sadu příkazů a skládá se ze dvou typů symbolů: z těch, které označují samy sebe a ze symbolů-příkazů, které se nazývají speciální symboly.

Seznámení s regulárními výrazy je lepší začít na příkladu metody sub, která se používá pro nahrazování v řetězci. Prvním parametrem metoda přijímá co nahradit, druhým - za co nahradit. Ve třetím parametru zadáme řetězec, ve kterém je třeba provést nahrazení. Ve čtvrtém volitelném parametru nastavíme počet nahrazení. Nejjednodušší nahrazení pomocí této metody bude vypadat takto:

pythonres = re.sub('a', '!', 'bab')
print(res) # vypíše 'b!b'

Jak jste si všimli, v regulárním výrazu písmena označují sama sebe. To samé platí i pro číslice. Pojďme nahradit číslici 2 na !:

pythonres = re.sub('2', '!', '12abc3')
print(res) # vypíše '1!abc3'

Zato tečka je speciálním symbolem a označuje libovolný symbol. V následujícím příkladu pojďme najít podřetězec podle takového vzoru: písmeno 'x', potom libovolný symbol, potom opět písmeno 'x':

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

Daný řetězec:

pythontxt = 'ahb acb aeb aeeb adcb axeb'

Napište regulární výraz, který najde řetězce 'ahb', 'acb', 'aeb' podle vzoru: písmeno 'a', libovolný symbol, písmeno 'b'.

Задание 2

Daný řetězec:

pythontxt = 'aba aca aea abba adca abea'

Napište regulární výraz, který najde řetězce 'abba', 'adca', 'abea' podle vzoru: písmeno 'a', 2 libovolné symboly, písmeno 'a'.

Задание 3

Daný řetězec:

pythontxt = 'aba aca aea abba adca abea'

Napište regulární výraz, který najde řetězce 'abba' a 'abea', bez zachycení 'adca'.