On Wed, 15 Oct 2008, Frederik Ramm wrote:
ich habe:
my ($v) = ($line =~ /^.+v=[\'\"]([\/-\w\d\s\.:,\(\)]+)[\'\"]/);
Ich will aber einfach nur den Text zwischen den Anführungszeichen mit allem
drum und dran. Probleme gibt es mit den dt. Umlauten.
(.+) läuft nicht, warum?
Was genau willst Du? Einfach nur den "value" ausschneiden? Warum dan
diese komplizierte Regel?
my ($v) = ($a =~ /v=['"](.*)['"]/);
Wobei dies nicht so ganz sauber ist mit den Anfuehrungszeichen, eher
muesste man
my ($x, $v) = ($a =~ /v=(['"])(.*)\1/);
schreiben, um einen Fall wie
v="Eiscafe D'Angelo"
richtig zu behandeln.
Und auch das klappt nur bei einer Gruppe (also wenn garantiert v der
letzte Parameter in der Zeile ist). Komplett richtig ist dann:
my (undef, $v) = ($a =~ /v=(['"])(.*?)\1/);
--> Beachte ".*?" statt ".*"
--> $x braucht auch keiner :-)
Ciao
--
http://www.dstoecker.eu/ (PGP key available)
_______________________________________________
Talk-de mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk-de