[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