Ahoj, http://docs.python.org/library/re.html
ty flagy tam dáváte špatně, funkce re.sub žádné flagy nebere. Viz help(re.sub). Řešením by mohlo být tam ten flag dát jinak, např. (?s): re.sub(r'(?s)\*\*(.*)\*\*', r'<strong>\1</strong>', text) Nebo ten regulární výraz zkompilovat (metoda re.compile flagy akceptuje) a používat patřičnou metodu vzniklého objektu. > A ještě jeden dotaz. V dokumentaci se zmiňují o metodě 'compile()', díky > níž se budou výrazy provádět rychleji. Jak moc se aplikace zrychlí, > případně jak to použít? O kolik se zrychlí záleží na složitosti výrazu a na počtu použití. Pokud bude použit jen jednou, nemá "předkompilace" smysl. Pokud se ovšem bude vyskytovat v nějakém hodně prováděném kusu kódu, předkompilováním rozhodně nic nezkazíte. Předkompilací vyhodnocování výrazu neurychlíte, jen se vyhnete další kompilaci (vytvoření automatu) při dalším použití. A ten flag multiline je myslím zbytečný, asi dělá něco jiného, než si představujete. PM 2009/5/18 Vasco <[email protected]>: > Zdravím, > měl bych dotaz na zvláštní chování regulárních výrazů, které si neumím > vysvětlit. > > Mám následující kód: > > # -*- coding: utf-8 -*- > import re > > flags = re.UNICODE | re.LOCALE | re.MULTILINE | re.DOTALL > text = u'Příšerně **žluťoučký\nkůň úpěl ďábelské\ntóny!**' > text2 = u'Příšerně **žluťoučký kůň úpěl ďábelské tóny!**' > print 'Text\t', re.sub(r'\*\*(.+?)\*\*', r'<strong>\1</strong>', text, > flags) > print 'Text2\t', re.sub(r'\*\*(.+?)\*\*', r'<strong>\1</strong>', text2, > flags) > > I přes to, že jsem nastavil MULTILINE a DOTALL, se první text, který > obsahuje \n nezobrazí správně. Když ale z řetězce vymažu znaky pro nový > řádek, regulární výraz funguje. > > Přitom v dokumentaci je napsáno, že pokud je nastaven DOTALL, bude '.' > brát všechny znaky, včetně \n. > > Jak by tedy měl správně vypadat výše napsaný regulární výraz? > > A ještě jeden dotaz. V dokumentaci se zmiňují o metodě 'compile()', díky > níž se budou výrazy provádět rychleji. Jak moc se aplikace zrychlí, > případně jak to použít? > > Díky, > Vlastimil S. > _______________________________________________ > Python mailing list > [email protected] > http://www.py.cz/mailman/listinfo/python > _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
