Ú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:
import 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:
res = 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 !:
res = 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':
res = re.sub('x.x', '!', 'xax eee')
print(res) # vypíše '! eee'
Daný řetězec:
txt = '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'.
Daný řetězec:
txt = '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'.
Daný řetězec:
txt = 'aba aca aea abba adca abea'
Napište regulární výraz, který najde řetězce
'abba' a 'abea', bez zachycení
'adca'.