Wiki Syntax mit RE parsen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Hallo,
ich bin gerade dabei mich in RE einzuarbeiten.
Als Übung hab ich mir das parsen einer Wiki-Syntax überlegt.
Ich weiß, das ich mit folgendem Ausdruck die Überschriften extrahieren kann:

Code: Alles auswählen

import re

test = """==Beispiel==
Hier eine BNF für 3*3=4 eine deutsche:
Die Ausformulierung lautet: 
Eine Postanschrift besteht aus einem Personenteil 1*1==3

==Punkt 2==
bla bla.

==Punkt 3==
bla bla bla.
"""
print re.findall(r"^==(.*?)==$", test, re.MULTILINE)
Meine Frage ist nun folgende: Kann ich auch mit einem Ausdruck mir nicht nur den Titel, sondern auch den dazugehörigen Text auslesen? Ich weiß das ich die Position der Überschriften bestimmen kann und dann den Text teilen. Mich interessiert ob es auch mit einem Ausdruck möglich ist. D.h. der Titel sollte in einer Gruppe stehen, der dazugehörige Text in einer zweiten.

MFG HerrHagen
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Moin,

als Annäherung habe ich das hier fabriziert:

Code: Alles auswählen

print re.findall(r"==(.*?)==(.*?)(?=^==.*?==)", test, re.MULTILINE|re.DOTALL)
Allerdings ist es IMO keine gute Idee, sowas mit einer Regex erschlagen zu wollen. Das ganze wird sehr schnell sehr knifflig - wenn nicht gar unmöglich.

Gruß,
Manuel
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich denke auch, dass man dazu wohl eher etwas wie pyparsing nehmen sollte!

Es gibt da sogar ein Beispiel zum Parsen von Wiki ähnlichen Strukturen:
http://pyparsing.wikispaces.com/file/view/simpleWiki.py
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

helduel hat geschrieben:Allerdings ist es IMO keine gute Idee, sowas mit einer Regex erschlagen zu wollen. Das ganze wird sehr schnell sehr knifflig - wenn nicht gar unmöglich.
Das Problem ist die Verschachtelung - da reichen dann Reguläre Ausdrücke nicht mehr aus. Wir hatten schon einmal so einen Thread, wo versucht wurde Wiki-Syntax (ich glaube Creole) mit Regulären Ausdrücken zu parsen.
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Danke für die Antworten!
Antworten