RegExp: Verschachtelungen nur bis zur Ebene 1 ausgeben
Philipp Hasenfratz
- perl
Halihallo Forumer
hab wiedereinmal ein kleines RegularExpression Problem... Bin leider (anscheinend) nicht mächtig, dieses selber zu lösen:
Beispiel:
<ul>
<li>test1.1</li>
<li>test1.2</li>
<li>
<ul>
<li>test2.1</li>
</ul>
</li>
<li>test1.3</li>
</ul>
Gibt es einen ansatz mit RegExp, um nur die Ebene 1 auszulesen (also test1.1, test1.2, test1.3, nicht aber test2.1)? - Also, jedes li auslassen, welches einen Unterknoten enthält (natürlich nicht in reinem Regexp, es sind auch Funktionsaufrufe erlaubt)...
Ich sehe weder einen linearen, noch einen rekursiven Ansatz, aber ich hoffe auf euren Geist (meiner wird langsam etwas müüüüdeeehhh *gähn*) ;)
Viele Grüsse
Philipp
Hi,
hab wiedereinmal ein kleines RegularExpression Problem...
dieses Problem ist im Verständnis des Einsatzgebietes begründet. Regular Expressions eignen sich _nicht_, um komplexe Strukturen zu analysieren. Du möchtest HTML::Parser, HTML::TokeParser oder ein vergleichbares Modul verwenden.
Cheatah
Hi Cheatah
hab wiedereinmal ein kleines RegularExpression Problem...
dieses Problem ist im Verständnis des Einsatzgebietes begründet. Regular Expressions eignen sich _nicht_, um komplexe Strukturen zu analysieren.
Du möchtest HTML::Parser, HTML::TokeParser oder ein vergleichbares Modul verwenden.
so, möcht ich das!? - Nun gut ;-)
Wenn's dann sein muss, greif ich eben auf die zurück... Nur schade...
Viele Grüsse
Philipp
Hi
Das einzige was mir jetzt einfällt, ist, das du neben untergeordneten <li>`s einen Kommentar schreibst.
mfg
Andres Freund
Halihallo
Das einzige was mir jetzt einfällt, ist, das du neben untergeordneten <li>`s einen Kommentar schreibst.
Eigentlich hab ich gar keinen Einfluss auf das HTML, denn ich erstelle es nicht. Aber deine Lösung ist trotzdem analalog verwertbar:
alle <ul> und </ul> (nicht der "Top-level") mit Kommentaren ersetzen bzw. erweitern (einfaches Regexp-Replace); dann alles Verarbeiten, jedoch Kommentare ignorieren... Yo, das dürfte so funktionieren.
So liesse sich dann sogar eine Rekursion programmieren, welche die Aufzählungen trotzdem richtig in einen HTML-Baum aufsplittet (ja ich kenne die HTML::Parser, HTML::TreeBuilder u. ä.).
Danke für die Idee
Viele Grüsse
Philipp