[Python] Reguläre Ausdrücke


mewX

Erfahrenes Mitglied
Hi!
Ich habe ein Problem mit einem regulären Ausdruck für einen Wikipedia-Bot (der Bot an sich ist egal, der funktioniert).
Ich habe eine bzw, viele Seiten mit folgedem Quelltext:
Code:
== Bezeichnung ==
* '''Deutsch:''' Puderabwehr
* '''Englisch:''' Shield Dust

== Beschreibung ==
Zusatzeffekte von Attacken fallen weg (Gift, Verbrennung, Verwirrung, Liebe usw.)

== Pokémon mit dieser Charakteristik ==
* [[Omot]]
* [[Hornliu]]
* [[Raupy]]
* [[Waumpel]]
* [[Pudox]]

{{stub}}
daraus soll das hier werden, und zwar automatisch ;-)
Code:
{{Fähigkeit|
name_de = Puderabwehr |
name_en = Shield Dust |
name_ja = |
name_ja_romaji =  |
Beschreibung = Zusatzeffekte von Attacken fallen weg (Gift, Verbrennung, Verwirrung, Liebe usw.) |
pokemon=
* [[Omot]]
* [[Hornliu]]
* [[Raupy]]
* [[Waumpel]]
* [[Pudox]]
|}}
Ich hab so versucht, schonmal den Deutschen Namen dieser "Fähigkeit" heruaszufinden:
Code:
namere = re.compile("Deutsch:'''(.*)\*")
m = namere.search(original_text)
if m:
    name = m.group(1)
    wikipedia.output('german name is %s' % name)
else:
    wikipedia.output('Something went wrong in the regular expression.')
Es gibt zwar keine Parse-Fehler, aber es kommt immer (meine) Fehlermeldung, dass der Reguläre Ausdruck nicht funktioniert hat.

Und hier die einfache Frage: Was mache ich falsch?

Gruß
 
C

Culebra

Das Problem ist, dass in Python ein . nicht das Zeilenende (\n) erkennt. Mit der Option DOTALL springst Du weiter auf die nächste Zeile(n).

Schreib das ganze als:
Code:
namere = re.compile("'''Deutsch:'''(.*)\*", re.DOTALL)
dann tut's.