Seite 1 von 1

Reguläre Standardausdrücke umgehen

Verfasst: Freitag 4. Juli 2008, 09:27
von mondschein
Hallo ich habe ein kleines Problem:

Ich schreibe gerade eine Art Übersetzungsprogramm --> Wikitext wird in Latex übersetzt

ich würde gern <galler> in \begin{figure}\n\centering umwandeln, doch da das \b als regulärer Ausdruck ne Bedeutung hat, bekomme ich in meinem Latex File immer ^Hegin\{fig.
Die Übersetzungszeile sieht folgendermaßen aus:

Code: Alles auswählen

	itext = re.sub(r'<gallery>' , '\\begin{figure}\\n\\centering', itext, count = 1)
Hat jemand ne Idee, ob ich prinzipiell was falsch mache oder wie ich das umgehen kann?
Danke für jeden Tipp
Mondschein

Re: Reguläre Standardausdrücke umgehen

Verfasst: Freitag 4. Juli 2008, 10:16
von Michael Schneider
Hallo mondschein!
mondschein hat geschrieben: Die Übersetzungszeile sieht folgendermaßen aus:

Code: Alles auswählen

	itext = re.sub(r'<gallery>' , '\\begin{figure}\\n\\centering', itext, count = 1)
Hat jemand ne Idee, ob ich prinzipiell was falsch mache oder wie ich das umgehen kann?
Das sieht nach dem typischen Doppelescape-Problem aus, obwohl das eigentlich nur bei Patterns auftreten dürfte?

Wenn es das ist, dann wird der String "\\begin..." von PYTHON erstmal als String "\begin..." interpretiert, was dann an re übergeben wird und dort eben anders interpretiert wird.

Dafür gibt es zwei Lösungen:
a) "\\\\begin..." oder
b) r"\\begin..." für eine raw-Eingabe

Das ist reine Spekulation, probier es mal aus.

Gruß,
Michael

Verfasst: Freitag 4. Juli 2008, 10:20
von mondschein
gracias, das war's ;)

Re: Reguläre Standardausdrücke umgehen

Verfasst: Freitag 4. Juli 2008, 14:32
von lunar
mondschein hat geschrieben:

Code: Alles auswählen

	itext = re.sub(r'<gallery>' , '\\begin{figure}\\n\\centering', itext, count = 1)
Wofür nutzt du da genau das "re"-Modul? So wie ich das sehe, nutzt du dessen Möglichkeiten nirgends, ergo würde es auch ein einfaches "str.replace" tun:

Code: Alles auswählen

itext.replace('<gallery>', '\\begin{figure}\n\\centering', 1)