<tt><font size=3 color=#ff00ff>?P<my_group></font></tt>
<br><font size=2 face="sans-serif">tam samozrejme nemusi byt, takze takto</font>
<br>
<br><tt><font size=3 color=blue># -*- coding: cp1250 -*-</font></tt><tt><font size=3 color=#8100ff><br>
import</font></tt><tt><font size=3> re<br>
<br>
flags = re.UNICODE | re.LOCALE | re.MULTILINE | re.DOTALL<br>
text = u'</font></tt><tt><font size=3 color=#ff00ff>Příšerně **žluťoučký</font></tt><tt><font size=3 color=#6260a1>\n</font></tt><tt><font size=3 color=#ff00ff>kůň
úpěl ďábelské</font></tt><tt><font size=3 color=#6260a1>\n</font></tt><tt><font size=3 color=#ff00ff>tóny!**</font></tt><tt><font size=3>'<br>
text2 = u'</font></tt><tt><font size=3 color=#ff00ff>Příšerně **žluťoučký
kůň úpěl ďábelské tóny!**</font></tt><tt><font size=3>'<br>
<br>
my_regex = re.compile(r"</font></tt><tt><font size=3 color=#ff00ff>\*\*(.+)\*\*</font></tt><tt><font size=3>",
flags)<br>
</font></tt><tt><font size=3 color=#813f62><b><br>
print</b></font></tt><tt><font size=3> '</font></tt><tt><font size=3 color=#ff00ff>Text:</font></tt><tt><font size=3 color=#6260a1>\t</font></tt><tt><font size=3 color=#ff00ff>%s</font></tt><tt><font size=3>' </font></tt><tt><font size=3 color=#6260a1>\</font></tt><tt><font size=3><br>
% re.sub(my_regex, r'</font></tt><tt><font size=3 color=#ff00ff><strong>\1</strong></font></tt><tt><font size=3>',
text, flags)</font></tt><tt><font size=3 color=#813f62><b><br>
print</b></font></tt><tt><font size=3> '</font></tt><tt><font size=3 color=#ff00ff>Text2:</font></tt><tt><font size=3 color=#6260a1>\t</font></tt><tt><font size=3 color=#ff00ff>%s</font></tt><tt><font size=3>' </font></tt><tt><font size=3 color=#6260a1>\</font></tt><tt><font size=3><br>
% re.sub(my_regex, r'</font></tt><tt><font size=3 color=#ff00ff><strong>\1</strong></font></tt><tt><font size=3>',
text2, flags)</font></tt>
<br>
<br>
<br>
<br><font size=3 face="Courier New">Text: Příšerně <strong>žluťoučký</font>
<br><font size=3 face="Courier New">kůň úpěl ďábelské</font>
<br><font size=3 face="Courier New">tóny!</strong></font>
<br><font size=3 face="Courier New">Text2: Příšerně <strong>žluťoučký
kůň úpěl ďábelské tóny!</strong><br>
</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">From:</font>
<td><font size=1 face="sans-serif">RMiklos@pss.sk</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">To:</font>
<td><font size=1 face="sans-serif">Konference PyCZ <python@py.cz></font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Date:</font>
<td><font size=1 face="sans-serif">18.05.2009 12:31</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Subject:</font>
<td><font size=1 face="sans-serif">Re: [python] Zvláštní chování regulárnich
výrazů</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Sent by:</font>
<td><font size=1 face="sans-serif">python-bounces@py.cz</font></table>
<br>
<hr noshade>
<br>
<br>
<br><font size=2 face="sans-serif">Funguje to ked najprv skompilujes regex
s danymi flags takto</font><font size=3> <br>
</font><tt><font size=3 color=blue><br>
# -*- coding: cp1250 -*-</font></tt><tt><font size=3 color=#8100ff><br>
import</font></tt><tt><font size=3> re<br>
<br>
flags = re.UNICODE | re.LOCALE | re.MULTILINE | re.DOTALL<br>
text = u'</font></tt><tt><font size=3 color=#ff00ff>Příšerně **žluťoučký</font></tt><tt><font size=3 color=#6260a1>\n</font></tt><tt><font size=3 color=#ff00ff>kůň
úpěl ďábelské</font></tt><tt><font size=3 color=#6260a1>\n</font></tt><tt><font size=3 color=#ff00ff>tóny!**</font></tt><tt><font size=3>'<br>
text2 = u'</font></tt><tt><font size=3 color=#ff00ff>Příšerně **žluťoučký
kůň úpěl ďábelské tóny!**</font></tt><tt><font size=3>'<br>
<br>
my_regex = re.compile(r"</font></tt><tt><font size=3 color=#ff00ff>\*\*(?P<my_group>.+)\*\*</font></tt><tt><font size=3>",
flags)</font></tt><font size=3> </font><tt><font size=3 color=#813f62><b><br>
<br>
print</b></font></tt><tt><font size=3> '</font></tt><tt><font size=3 color=#ff00ff>Text:</font></tt><tt><font size=3 color=#6260a1>\t</font></tt><tt><font size=3 color=#ff00ff>%s</font></tt><tt><font size=3>'
</font></tt><tt><font size=3 color=#6260a1>\</font></tt><tt><font size=3><br>
% re.sub(my_regex, r'</font></tt><tt><font size=3 color=#ff00ff><strong>\1</strong></font></tt><tt><font size=3>',
text, flags)</font></tt><tt><font size=3 color=#813f62><b><br>
print</b></font></tt><tt><font size=3> '</font></tt><tt><font size=3 color=#ff00ff>Text2:</font></tt><tt><font size=3 color=#6260a1>\t</font></tt><tt><font size=3 color=#ff00ff>%s</font></tt><tt><font size=3>'
</font></tt><tt><font size=3 color=#6260a1>\</font></tt><tt><font size=3><br>
% re.sub(my_regex, r'</font></tt><tt><font size=3 color=#ff00ff><strong>\1</strong></font></tt><tt><font size=3>',
text2, flags)</font></tt><font size=3> <br>
<br>
</font><font size=2 face="sans-serif"><b><u><br>
Vystup</u></b></font><font size=3> </font><font size=2 face="sans-serif"><br>
</font><font size=3 face="Courier New"><br>
python regexp.py</font><font size=3> </font><font size=3 face="Courier New"><br>
Text: Příšerně <strong>žluťoučký</font><font size=3>
</font><font size=3 face="Courier New"><br>
kůň úpěl ďábelské</font><font size=3> </font><font size=3 face="Courier New"><br>
tóny!</strong></font><font size=3> </font><font size=3 face="Courier New"><br>
Text2: Příšerně <strong>žluťoučký kůň úpěl ďábelské
tóny!</strong></font><font size=3> <br>
<br>
<br>
<br>
</font>
<table width=100%>
<tr valign=top>
<td width=17%><font size=1 color=#5f5f5f face="sans-serif">From:</font><font size=3>
</font>
<td width=82%><font size=1 face="sans-serif">Vasco <vasco.vls@gmail.com></font><font size=3>
</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">To:</font><font size=3>
</font>
<td><font size=1 face="sans-serif">python@py.cz</font><font size=3> </font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Date:</font><font size=3>
</font>
<td><font size=1 face="sans-serif">18.05.2009 11:30</font><font size=3>
</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Subject:</font><font size=3>
</font>
<td><font size=1 face="sans-serif">[python] Zvláštní chování regulárnich
výrazů</font><font size=3> </font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Sent by:</font><font size=3>
</font>
<td><font size=1 face="sans-serif">python-bounces@py.cz</font></table>
<br><font size=3><br>
</font>
<hr noshade><font size=3><br>
<br>
</font><tt><font size=2><br>
Zdravím,<br>
měl bych dotaz na zvláštní chování regulárních výrazů, které si neumím<br>
vysvětlit.<br>
<br>
Mám následující kód:<br>
<br>
# -*- coding: utf-8 -*-<br>
import re<br>
<br>
flags = re.UNICODE | re.LOCALE | re.MULTILINE | re.DOTALL<br>
text = u'Příšerně **žluťoučký\nkůň úpěl ďábelské\ntóny!**'<br>
text2 = u'Příšerně **žluťoučký kůň úpěl ďábelské tóny!**'<br>
print 'Text\t', re.sub(r'\*\*(.+?)\*\*', r'<strong>\1</strong>',
text,<br>
flags)<br>
print 'Text2\t', re.sub(r'\*\*(.+?)\*\*', r'<strong>\1</strong>',
text2,<br>
flags)<br>
<br>
I přes to, že jsem nastavil MULTILINE a DOTALL, se první text, který<br>
obsahuje \n nezobrazí správně. Když ale z řetězce vymažu znaky pro
nový<br>
řádek, regulární výraz funguje.<br>
<br>
Přitom v dokumentaci je napsáno, že pokud je nastaven DOTALL, bude '.'<br>
brát všechny znaky, včetně \n.<br>
<br>
Jak by tedy měl správně vypadat výše napsaný regulární výraz?<br>
<br>
A ještě jeden dotaz. V dokumentaci se zmiňují o metodě 'compile()',
díky<br>
níž se budou výrazy provádět rychleji. Jak moc se aplikace zrychlí,<br>
případně jak to použít?<br>
<br>
Díky,<br>
Vlastimil S.<br>
_______________________________________________<br>
Python mailing list<br>
Python@py.cz</font></tt><font size=3 color=blue><u><br>
</u></font><a href=http://www.py.cz/mailman/listinfo/python><tt><font size=2 color=blue><u>http://www.py.cz/mailman/listinfo/python</u></font></tt></a><font size=3><br>
<br>
</font><tt><font size=2>_______________________________________________<br>
Python mailing list<br>
Python@py.cz<br>
</font></tt><a href=http://www.py.cz/mailman/listinfo/python><tt><font size=2>http://www.py.cz/mailman/listinfo/python</font></tt></a>
<br>
<br>