sma hat gezeigt, wie es geht[*]. Seinen Beitrag habe ich jedoch als tongue-in-cheek verstanden. Ich denke also nicht, dass er dem OP tatsächlich empfiehlt, HTML mittels regex zu parsen, da das offensichtlich erheblich komplizierter ist, als einfach einen fertigen HTML-Parser zu verwenden. Insbesondere für jemanden, der noch nicht gelernt hat, was greediness ist. Das Parsen von HTML ist ein bereits gelöstes Problem. Man braucht einfach nur faul zu sein. Faulheit ist beim Programmierer eine Tugend.problembär hat geschrieben:Wenn also jemand HTML mit RegEx parsen möchte, sag' ich, "laß' ihn doch" und helfe ihm so gut ich kann dabei, daß es technisch auch klappt.
Überhaupt verhält es sich so, wie Jamie Zawinski schrieb: Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
Desweiteren handelt es sich bei HTML um eine kontextsensitive Sprache, aber reguläre Ausdrücke eignen sich nur - der Name deutet es an - um reguläre Sprachen zu parsen. Beide Sprachen leben auf verschiedenen Ebenen der Chomsky-Hierarchie. Am überzeugendsten hat dies IMO bobince auf StackOverflow dargelegt.
Eine Möglichkeit zur Lösung des Problems des OPs wäre übrigens dies hier:
Code: Alles auswählen
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
for each in soup.findAll('description'):
print each
[*]Der Parser von sma ist übrigens nicht wirklich in regex programmiert. Mit re zerlegt er nur den HTML-String in Tokens. Mithin handelt es sich um einen Scanner. Der Parser verwendet zwar diesen Scanner, aber er ist in Python programmiert.