Du kannst HTML nicht mit RegEx parsen

11.07.2011, 17:13

Oft, wenn jemand auf der Q&A-Site StackOverflow nach geeigneten Regulären Ausdrücken fragt um HTML zu verarbeiten, wird man auf diesen Artikel verwiesen, welcher dem Leser auf eine interessante Art und Weise mitteilt, dass er es gefälligst unterlassen soll, Reguläre Ausdrücke für HTML zu verwenden.

Eine deutsche Übersetzung des Beitrags könnte etwa so lauten:

Du kannst HTML nicht mit RegEx parsen, weil HTML nicht mit RegEx geparst werden kann. RegEx ist kein Werkzeug, das dazu benutzt werden kann HTML korrekt zu parsen. Wie ich viele Male zuvor auf HTML-und-RegEx-Fragen geantwortet habe, erlaubt der Gebrauch von RegEx das Verzehren von HTML nicht. Reguläre Ausdrücke sind ein Werkzeug, das ungenügend durchdacht ist, die Konstrukte von HTML zu verstehen. HTML ist keine reguläre Sprache und kann daher nicht mit Regulären Ausdrücken geparst werden. RegEx-Queries sind nicht dafür eingerichtet, HTML in sinnvolle Teile aufzuschlüsseln. So viele Male, aber es geht mir nicht auf den Geist. Auch verbesserte irreguläre Reguläre Ausdrücke, wie von Perl genutzt, sind nicht fähig HTML zu parsen. Du wirst mich nie knacken können. HTML ist eine Sprache ausreichender Komplexität, damit sie nicht mit Regulären Ausdrücken geparst werden kann. Auch Jon Skeet kann HTML nicht mit RegEx parsen. Immer wenn du versuchst HTML mit RegEx zu parsen, vergiesst das unheilige Kind Blut von Jungfrauen, und Russische Hacker pwn'en deine Web-Applikation. HTML mit RegEx zu parsen, beschwört verdorbene Seelen in das Reich der Lebenden. HTML und RegEx passen zusammen wie Liebe, Heirat und ritueller Kindsmord. Das <center> gilt nicht, es ist zu spät. Die Kraft von RegEx und HTML zusammen im selben begrifflichen Raum wird deinen Verstand zerstören wie wässrige Knete. Wenn du HTML mit RegEx parst, läufst du über zu ihnen und ihren blasphemischen Wegen, welche uns alle in unmenschliche Sklavenarbeit verdammen, für den Einen, dessen Name nicht in der einfachen multilingualen Ebene ausgedrückt werden kann, er kommt. HTML-plus-RegEx wird die Nerven des Empfindens schmelzen während du deine psychische Austrocknung im Ansturm des Grauens vernimmst. RegE̿̔̉x-basierte HTML-Parser sind der Krebs, der StackOverflow tötet es ist zu spät wir können nicht gerettet werden der Übertritt eines Ki͡ndes versichert, dass RegEx alles lebende Gewebe verzehren wird (ausgenommen für HTML, das es nicht kann, wie vorhin prophezeit) Lieber Herr, hilf uns, wie kann jemand diese Plage überstehen. RegEx fürs Parsen von HTML zu benutzen, hat die Menschheit in eine Ewigkeit gefürchteter Qualen und Sicherheitslücken verbannt. RegEx als ein Werkzeug zu benutzen um HTML zu verarbeiten, verursacht einen Bruch zwischen dieser Welt und dem gefürchteten Reich der verdͪo͛rbenen Entities (wie SGML-Entities, nur verdorbenener) ein flüchtiger Blick in die Welt der RegEx-Parser für HTML wird sogleich das Bewusstsein eines Programmierers in eine Welt unaufhörlichen Schreiens transportieren, er kommt, die ekelhafte schleimige RegEx-Infektion wird deinen HTML-Parser, Applikation und Existenz verschlingen für alle Zeit wie Visual Basic nur schlimmer, er kommt er kommt kämpfe nicht er kommt, ̕sei​n un̨eilvo͞ller Glańz zerst҉ört sämtliche Erleuchtuñg. HTML-Tags r̶i̧nnend vǫn deînen A͠uge͢n wiͤͫ͛ͬ̀̚͝e̊͘ flüs̸siger Schmerz, das Lied vom Parsen mit Re̸gulären Ausdrücken wird die Stimmen des sterblichen Mannes auslöschen, von der Sphäre kann ich es sehen, du kannst es sehen ̲͚̖͔̙, es î̩́st̲͎̩̱͔́̋̀ wunderschön, die endgültige Auslöschung der Lügen des Menschen ALLEŚ͖̩͇̗̪̏̈́ IST VERLOREN ALLES IST VERLOREN das Pon̷y er kommt er kommt er kommt das Wundsekret durc̶̮hdringt mein ganzes GESICHT MEIN GESICHT ᵒh Gott nein NEIN NEEÈIIN NȆ̴̟̟͙̞ͩ͌͝IN stop die En​*̶͑̾̾​̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆e̠̅l͖͉̗̩̳̟̍ͫͥͨ sî̩́nd ncht è̑ͧ̌aͨl̘̝̙̃ͤ͂̾̆ Ẓ̵̨̠̗̭͔̳̼̓̒̐͒̀ͅA̫͔͇ͯͥ̐̏̀ͯ͢L̸͎̙ͫ̇ͦ̀G̨͈̣̳̟͗̓̾ͥ̈́͊̏O͚͎̞͓̯̿́̓̊́ͅ I͕͔̙̭͍̓Ṣ̩̲͋ͩͨͤͤT͕̣̝̮̖͛̐ͮ͂̉ͫ́̚  ҉̯͈͕̹̘̱TO͇̹̺ͅƝ̴ȳ̳ TH̘Ę͖̥̫͎̭̈́̉ͯ̿̔̀ͅ P̯͍̭O̚​N̐Y̡, Ë͖́̉R ̶̧̨̱̹̭̯ͧ̾ͬKOͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜M͊̒̚T̲͎̩̱͔́̋̀.

Hast du stattdessen einen XML-Parser probiert?

Mit 4350 Upvotes und gut 275 tausend Views handelt es sich um die mit Abstand populärste Antwort auf StackOverflow.
 


Andere Einträge


Kommentare

#1
von miroo am 04.05.2014, 16:53
Schön und gut, aber wie kann ich nur bis zum bestimmten Wort in *.html gehen sp. finden und bei angekommen (bis Marke) beenden?
Bitte um ein Beispiel.
MfG miroo