[Python] regexp e gruppi

Daniele Zambelli daniele.zambelli a gmail.com
Mar 10 Set 2013 13:10:15 CEST


Salve a tutti.

Ho un problema che forse si può risolvere con una espressione regolare
adatta.

Un testo LaTeX contiene delle definizioni e delle descrizioni come nel
seguente esempio:

Prima delle modifiche:
\begin{description}
\item[{Semiretta}] \leavevmode
Si dice semiretta ciascuna delle due parti in cui una retta
è divisa da un suo punto. Quel punto si chiama \textbf{origine} della
semiretta.
L'origine appartiene alla semiretta.

\end{description}

Esempi
\begin{itemize}
\item {} \begin{description}
\item[{$4 x ^{2 } - 9   =   0$}] \leavevmode
risoluzione

\end{description}

La prima "description" è una definizione, la seconda no.

Io vorrei trasformarlo nel seguente modo:

Dopo le modifiche:
\begin{definizione}
\textbf{Semiretta}
Si dice semiretta ciascuna delle due parti in cui una retta
è divisa da un suo punto. Quel punto si chiama \textbf{origine} della
semiretta.
L'origine appartiene alla semiretta.

\end{definizione}

Esempi
\begin{itemize}
\item {} \begin{description}
\item[{$4 x ^{2 } - 9   =   0$}] \leavevmode
risoluzione

\end{description}

Io avevo pensato alla seguente espressione:

>>> re1 = re.compile(r'\\begin{description}\n\\item\[\{([^\}]+)\}]
\\leavevmode([^(\\end{description})])\\end{description}', re.M)

seguita dalla sostituzione:

>>> re1.sub(r'\\begin{definizione}\n\\textbf{\1}\2\\end{definizione}'

Ho provato anche a sostituire '\n' con '\xe2\x80\xa9':

>>> re1 =
re.compile(r'\\begin{description}\xe2\x80\xa9\\item\[\{([^\}]+)\}]
\\leavevmode([^(\\end{description})])\\end{description}', re.M)

seguita dalla sostituzione:

>>>
re1.sub(r'\\begin{definizione}\xe2\x80\xa9\\textbf{\1}\2\\end{definizione}'

ma la situazione non è migliorata. Ho fatto altre millemila prove che non
sto a riportare, ma evidentemente mi sfugge qualcosa.

Mi rivolgo ai pazienti maghi delle regexp chiedendo qualche aiuto.

Grazie.

-- 

Daniele

www.fugamatematica.blogspot.com

    giusto!
    nel verso
    forse è perché non guardiamo le cose
    Quando non ci capiamo,
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130910/b89f2223/attachment.html>


Maggiori informazioni sulla lista Python