[Dresden-pm] Re: Regex-Frage
Steffen Schwigon
schwigon at webit.de
Don Jan 8 06:45:55 CST 2004
"Jens Puruckherr" <jpuruckherr at cyberport.de> writes:
> @item = ($xsell =~ /(<Item>.*<\/Item>)/s);
>
> matcht mir alles zwischen dem ersten und dem letzten Item auf einmal.
> Wie kann ich das ändern?
Die Eigenschaft, den längstmöglichen Ausdruck zu matchen, nennt sich
"greedy". Lies mal "man perlre" und such nach "greedy". Man kann da
mit einem `?` hinter "quantifiers" wie '*' das greedy beschränken.
Ich hab' das selbst noch nie probiert und kann grad keine souveräneren
Tips geben.
> PS. Es macht mittlerweile deutlich mehr Spass die XMLs per Hand zu
> zerlegen als son dickes DOM-Monster anzuwerfen.
> Und schneller und sparsamer ists obendrein :-)
SAX wäre noch eine Alternative. Nach bissel Eingewöhnung kommt
man da auch zurecht.
GreetinX
Steffen
--
"When you pull out the pin, Mr. Grenade is no longer your friend."
-- Sarge/Q3