Regulární výrazy

Základy regulárních výrazů

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

Funkce regulárních výrazů v modulu re

Základní funkce regexp:

Pokročilejší funkce je re.finditer:

Nahrazování pomocí regexp

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).


Úkol 1: program na vyhledání e-mailů

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);

Úkol 2: užitečný program na zvýrazňování pythonovské syntaxe

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í?


Zpět na obsah | Poslední úprava: 2012-01-09