[vienna.pm] Extraktion von XML tags
Johannes Fuernkranz
juffi at ai.univie.ac.at
Tue Mar 12 04:58:55 CST 2002
* * * vienna-pm-list * * *
Michael Bauer wrote:
> * * * vienna-pm-list * * *
>
>
> Hallo liste
>
> Brauche einen regex der mir alle XML tags aus einem string extrahiert.
> s/[^(<.*?>)]//; Funktioniert nicht richtig. Also z.b. man hat
> <addr>1.1.1.1</addr> und rauskommen sollt <addr><addr>. Irgendwie bin ich nicht
> der hellste was regexes angeht. denn bei dem kommt ein <ddr>10.0.0.101</addr>
> raus, was eindeutig nicht das erwünschte ist ;)
Naja, ich glaube zumindest zu wissen, warum Deine Version nicht
funktioniert: [] matcht einzelne Charakters, und der erste Charakter,
der nicht einer von <.*?> ist, ist ein 'a', und der wird
rausgeschmissen. Die anderen auch wenn Du hinten ein g dranschreibst
(s/[^(<.*?>)]//g).
Einfacher ist es, alle Tags rauszuhauen:
s/<.*?>//g;
Aber wie man das verneint, weisz ich auch nicht. Interessante Frage.
Meine Loesung wuerde ja eher in die Richtung gehen:
my @tags = split />[^<^>]*</;
Das hat noch Kinderkrankheiten (z.B. werden die <> auszer beim ersten
und letzten mit weggenommen, aber ich denke das kann man ausbuegeln.
Wenn Du allerdings wirklich alle Tokens in einem String brauchst, musz
es sicher bessere Loesungen geben.
Auf jeden Fall taet mich auch interessieren, ob man patterns verneinen
kann. Weisz das wer?
Juffi
PS: Wieso Deine Version aus dem 1.1.1.1 ein 10.0.0.101 macht, weisz ich
auch nicht. :-)
###
You are subscribed to vienna-pm-list as Johannes Fuernkranz <juffi at ai.univie.ac.at>
http://www.fff.at/fff/vienna.pm/
More information about the Vienna-pm
mailing list