[Python-de] Schon wieder findall

Diez B. Roggisch deets at web.de
Son Mar 13 19:16:58 CET 2005


Am Sonntag, 13. März 2005 18:49 schrieb Albert Hermeling:
> 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?

Aber nach wie vor gilt: Es sind so viele schlechte regex-basierte Parser für 
html geschrieben worden mit dem Argument ein echter sgml/xml Parser wäre "zu 
schwierig/langsam" - wenn die Zeit die da rein geflossen ist einmal in das 
Verständnis der richtigen Parser geflossen wäre, wären die Problem schon 
lange gelöst.

MfG Diez