[python] reguläre ausdrücke


mewX

Erfahrenes Mitglied
Ich steig da einfach nicht durch, habe schon alles mögliche gelesen und so, geht aber nicht.

Ich möchte den Text zwischen zwei bestimmten Textstellen aus einem Text löschen.

Also ich dachte etwa so:
Code:
test = re.compile(u'== Pokédex Einträge == (.*?) ==', re.UNICODE)
text = test.sub(u'== Pokédex Einträge == \n\n ==', text)
( also aus dem text soll alles zwischen == Pokédex Einträge == und dem nächsten == entfernt werden..)


gruß
 

mewX

Erfahrenes Mitglied
Hm, ja, geht aber nicht...
Ich habe einen langen Text, wo irgendwo das Stichwort "== Pokédex Einträge ==" vorkommt. Dann möchte ich von da an alles bis zum nächsten "==" wegschneiden.
Kann das an den Sonderzeichen liegen, doe rie Regex-Funktion vllt. nicht versteh? Das è ? Die = sind doch keine Metacharacktere, die man escapen müsste, ne?
 

mewX

Erfahrenes Mitglied
Ich habe, wie gesagt, einen Text (der im übrigen ein WIki-Code-Text ist...).

Der Text ist noch länger, aber irgendwo darin kommt eine solche Stelle vor:

Code:
== Pokédex Einträge ==
Blabla
Tabelle und so
xyz
== Nächste Überschrift ==
Ich hätte gerne alles zwischen == Pokédex Einträge == und dem nächsten == durch etwas anderes ersetzt (eine Variable z.B.)

gruß
 

deepthroat

Erfahrenes Mitglied
Hi.

Ach, in dem Zwischenraum können Newlines drin sein? Der . stimmt normalerweise nicht mit dem \n Zeichen überein. Du mußt das Flag re.DOTALL für den reg. Ausdruck mit angeben.

Gruß
 

mewX

Erfahrenes Mitglied
Hm, hab jetzt das mal so rum ausprobiert..
Code:
test = re.compile(u"(.*)== Pokédex Einträge ==\n (.*) \n==(.*)", re.DOTALL)
text = test.sub("\1\n== Pokédex Einträge ==\nHier kommt ein neuer Text hin\n==\3", text)
Schade, dass das auch nicht geht ;)
Genausowenig wie
Code:
test = re.compile(u"== Pokédex Einträge ==\n (.*) \n==", re.DOTALL)
text = test.sub("== Pokédex Einträge ==\nHier kommt ein neuer Text hin\n==", text)

gruß
ich glaube es könnte mit dem Unicode-Zeugs zusammenhängen... Weiß aber nicht wie ich das verbessern kann..
 
Zuletzt bearbeitet:

deepthroat

Erfahrenes Mitglied
Hi.

Python:
import re

regex = re.compile(u"== Pokédex Einträge ==.*?==", re.UNICODE + re.DOTALL)

string = u"""== Pokédex Einträge ==
Blabla
Tabelle und so
xyz
== Nächste Überschrift =="""

print regex.sub(u"== Pokédex Einträge ==\nHier kommt ein neuer Text hin\n==", string)
Gruß