<div dir="ltr">Salve a tutti.<div><br></div><div>Ho un problema che forse si può risolvere con una espressione regolare adatta.</div><div><br></div><div>Un testo LaTeX contiene delle definizioni e delle descrizioni come nel seguente esempio:</div>
<div><br></div><div><div>Prima delle modifiche:</div><div>\begin{description}</div><div>\item[{Semiretta}] \leavevmode</div><div>Si dice semiretta ciascuna delle due parti in cui una retta</div><div>è divisa da un suo punto. Quel punto si chiama \textbf{origine} della semiretta.</div>
<div>L'origine appartiene alla semiretta.</div><div><br></div><div>\end{description}</div><div><br></div><div>Esempi</div><div>\begin{itemize}</div><div>\item {} \begin{description}</div><div>\item[{$4 x ^{2 } - 9   =   0$}] \leavevmode</div>
<div>risoluzione</div><div><br></div><div>\end{description}</div><div><br></div><div>La prima "description" è una definizione, la seconda no.</div><div><br></div><div>Io vorrei trasformarlo nel seguente modo:</div>
<div><br></div><div>Dopo le modifiche:</div><div>\begin{definizione}</div><div>\textbf{Semiretta}</div><div>Si dice semiretta ciascuna delle due parti in cui una retta</div><div>è divisa da un suo punto. Quel punto si chiama \textbf{origine} della semiretta.</div>
<div>L'origine appartiene alla semiretta.</div><div><br></div><div>\end{definizione}</div><div><br></div><div>Esempi</div><div>\begin{itemize}</div><div>\item {} \begin{description}</div><div>\item[{$4 x ^{2 } - 9   =   0$}] \leavevmode</div>
<div>risoluzione</div><div><br></div><div>\end{description}</div><div><br></div></div><div>Io avevo pensato alla seguente espressione:</div><div><br></div><div>>>> re1 = re.compile(r'\\begin{description}\n\\item\[\{([^\}]+)\}] \\leavevmode([^(\\end{description})])\\end{description}', re.M)</div>
<div><br></div><div>seguita dalla sostituzione:</div><div><br></div><div>>>> re1.sub(r'\\begin{definizione}\n\\textbf{\1}\2\\end{definizione}'</div>
<div><br></div><div>Ho provato anche a sostituire '\n' con '\xe2\x80\xa9':</div><div><br></div><div>>>> re1 = re.compile(r'\\begin{description}\xe2\x80\xa9\\item\[\{([^\}]+)\}] \\leavevmode([^(\\end{description})])\\end{description}', re.M)</div>
<div><br></div><div>seguita dalla sostituzione:</div><div><br></div><div>>>> re1.sub(r'\\begin{definizione}\xe2\x80\xa9\\textbf{\1}\2\\end{definizione}'</div><div><br></div><div>ma la situazione non è migliorata. Ho fatto altre millemila prove che non sto a riportare, ma evidentemente mi sfugge qualcosa.<br>
</div><div><br></div><div>Mi rivolgo ai pazienti maghi delle regexp chiedendo qualche aiuto.</div><div><br></div><div>Grazie.<br clear="all"><div><br></div>-- <br><br>Daniele<br><br><a href="http://www.fugamatematica.blogspot.com">www.fugamatematica.blogspot.com</a><br>
<br>    giusto!<br>    nel verso<br>    forse è perché non guardiamo le cose<br>    Quando non ci capiamo,<br>
</div></div>