Vymezení znaku:
Vyznačení počtu znaků:
Poloha v řetězci:
Pomůcky:
Kompletní přehled na dokumentaci pythonu: http://docs.python.org/library/re.html
Základní funkce regexp:
Pokročilejší funkce je re.finditer:
Příkazem: re.sub(co, za_co, kde) ... navrací řetězec, v němž byly nahrazeny výskyty reg. výrazu
Pozn.: za_co nemusí být typu "str", ale může to být i funkce přijímající jeden parametr typu MatchObject (viz výše).
V Glade vyrobte okno, které bude obsahovat jedno tlačítko a dvě textová pole (gtk.TextView).
Do výchozího pythonovského programu (viz zde) přidejte níže uvedenou obsluhu události kliknutí na tlačítko. Nezapomeňte událost tlačítka vytvořit i v Glade!
## Odsud obsluhy událostí def on_button1_clicked(self, widget): buf1 = self.w("textview1").get_buffer() buf2 = self.w("textview2").get_buffer() input_text = buf1.get_text(buf1.get_start_iter(), buf1.get_end_iter()) import re output_text = "" mailpattern = "" ## TODO Úkol pro studenty! for result in re.finditer(mailpattern, input_text): ## navrací objekty typu MatchObject output_text = output_text + result.group() + "\n" buf2.set_text(output_text);
Na podobném principu vytvořte pro svého hodného učitele program, který mu bude zvýrazňovat pythonovskou syntaxi ve formátu HTML. Klíčová slova pythonu (seznam zde) by mohla být tučně (tagy <b>, </b>), čísla modře (tagy <font color="blue">, </font>)....
Použijte k tomu příkaz re.sub().
--- re.sub("(aaa|ccc)(.)", "<b>\\g<1></b>", "aaaX bbbY cccZ dddŽ") '<b>aaa</b> bbbY <b>ccc</b> ddd\xc5\xbd'
Úkol 2.1 pro rychlé: dovedete zařídit, aby se kód aktualizoval během psaní?