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

Antwort per Email an