Ein Fehler, den ich bei den Leuten sehe über et noch einmal versucht, XML oder HTML mit einer Regex zu parsen. Hier sind einige der Gründe, warum das Parsen von XML und HTML schwierig ist:
Die Leute wollen eine Datei als eine Folge von Zeilen behandeln, aber das ist richtig:
<tag
attr="5"
/>
Die Leute wollen < oder <tag als den Anfang eines Tags behandeln, aber so etwas gibt es auch in der freien Wildbahn:
<img src="imgtag.gif" alt="<img>" />
Oft möchte man beginnende Tags mit endenden Tags abgleichen, aber XML und HTML erlauben es, dass Tags sich selbst enthalten (was traditionelle Regexe überhaupt nicht können):
<span id="outer"><span id="inner">foo</span></span>
Oft möchte man einen Abgleich mit dem Inhalt eines Dokuments durchführen (z. B. das berühmte Problem "alle Telefonnummern auf einer bestimmten Seite finden"), aber die Daten sind möglicherweise markiert (auch wenn sie bei der Betrachtung normal erscheinen):
<span class="phonenum">(<span class="area code">703</span>)
<span class="prefix">348</span>-<span class="linenum">3020</span></span>
Kommentare können schlecht formatierte oder unvollständige Tags enthalten:
<a href="foo">foo</a>
<!-- FIXME:
<a href="
-->
<a href="bar">bar</a>
Welche anderen Probleme sind Ihnen bekannt?