[Talk-de] REGEX in PERL wieder mal
Rolf Bode-Meyer
robome at gmail.com
Fr Jun 11 12:18:21 UTC 2010
Am 11. Juni 2010 14:01 schrieb GS <gerhardschwanz at yahoo.de>:
> problem dabei ist, dass statt des anführungszeichens nach user="xyz
> schon mal ein paar weiter gesprungen wird. das ergebnis des regex sieht dann so aus (für user):
>
> MichaH" lat="50.0693044
>
> der regex "stoppt" also zu spät.
>
> wie kommt das? warum nimmt er lon=xxx nicht auch dazu und vor allem:
>
> wie mache ich es richtig?
Grund ist dass Regex per default greedy sind, also so viel wie möglich
matchen wie der Ausdruck gerade noch passt.
Du kannst das umgehen indem du beispielsweise
/ user=\"(.+?)\"/
oder auch
/ user=\"([^\"]+)\"/
schreibst
Lies dir mal http://search.cpan.org/~rgarcia/perl/pod/perlretut.pod
bezüglich greedy quantifiers durch. Und schau dir mal den Regex Coach
(http://www.weitz.de/regex-coach/) an. Damit kannst Du Ausdrücke
interaktiv testen.
Rolf
Mehr Informationen über die Mailingliste Talk-de