[Python-de] Schon wieder findall

Albert Hermeling Albert.Hermeling at t-online.de
Mon Mar 14 08:41:30 CET 2005


Am Sonntag, 13. März 2005 19:16 schrieb Diez B. Roggisch:
> Am Sonntag, 13. März 2005 18:49 schrieb Albert Hermeling:

Guten Morgen Diez,
> > str1 = 'Und was ist <b><i>fett und schief</i></b> der <b>Dicke</b> mit
> > den <i>schiefen</i> Gang'
> >
> > str2 = 'Ein <b>Haus</b> ist <i>groß</i> wenn es <u>zwei Stockwerke</u>
> > hat'
> >
> > Folgende RegExe führte zum Teilerfolg:
> >
> > reg = re.compile(r"<[biu].*>(.+)</[biu]>")
> > reg.findall(str1 [bzw. str2])
>
> import re
> str1 = 'Und was ist <b><i>fett und schief</i></b> der <b>Dicke</b> mit den
> <i>schiefen</i> Gang'
> str2 = 'Ein <b>Haus</b> ist <i>groß</i> wenn es <u>zwei Stockwerke</u> hat'
> reg = re.compile(r"<[biu][^>]*>([^<]+)</[biu]>")
> for s in [str1, str2]:
>     print reg.findall(s)
>
> Besser so?
Ja so ist es Perfekt. Wenn ich mir dein Regulären Ausdruck und den der anderen 
anschaue stelle ich fest das ich den >.< Punkt zu großzügig benutze. 
Ansonsten war mein Regulärer Ausdruck nicht falsch. Oder?

> Aber nach wie vor gilt: Es sind so viele schlechte regex-basierte Parser
> für html geschrieben worden 
Du hast schon recht mit den Hinweis das die Verwendung des sgmllib Moduls die 
bessere Wahl ist, wenn es bei der Entwicklung eines Parsers auf Zeit ankommt. 
Da ich aber im Moment Zeit im Überfluß habe (leider :-(( ) und ich mich so 
wie so mit den Regulären Ausdrücken in Python beschäftigen wollte habe ich 
den längeren Weg gewählt. 

Allerdings ist es nicht meine Absicht andere mit meinen Fragen zu nerven. 
Falls sich der eine oder andere genervt fühlt bitte ich um Entschuldigung.

>einmal in das Verständnis der richtigen Parser geflossen wäre,
Also am Verständnis liegt es nicht das ich die sgmllib nicht verwendet habe. 
Ich habe mich ja schließlich zuerst mit diesem Modul beschäftigt und finde 
das Modul gut.

Noch mal danke an alle die mir geholfen haben.

Albert