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
