[Dresden-pm] Regex-Frage
Christian Exner
exner at webit.de
Don Jan 8 06:46:50 CST 2004
hi,
> ich habe ein XML-Fragment:
> <Zubehoer>
> <Item>
> <Artikelnummer>1234-567</Artikelnummer>
> <Gruppe>Ram</Gruppe>
> <Position>1</Position>
> <Flag>ist</Flag>
> </Item>
> <Item>
> <Artikelnummer>1234-567</Artikelnummer>
> <Gruppe>Ram</Gruppe>
> <Position>1</Position>
> <Flag>ist</Flag>
> </Item>
> [..]
> </Zubehoer>
>
> und will mittels Regex alle Items in ein Array lesen.
> Mein Ansatz:
> @item = ($xsell =~ /(<Item>.*<\/Item>)/s);
>
> matcht mir alles zwischen dem ersten und dem letzten Item auf einmal.
> Wie kann ich das ändern?
du musst warscheinlich nur die "greedyness" deines .* konstruktes ändern
indem du ein fragezeichen hinter den stern setzt. damit hört es schon beim
ersten vorkommen von </item> auf zu suchen und nicht beim letzten:
@item = ($xsell =~ /(<Item>.*?<\/Item>)/s);
--
exxi