[Talk-de] PERL REGEX?

Dirk Stöcker openstreetmap at dstoecker.de
Do Okt 16 07:20:42 UTC 2008


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)


Mehr Informationen über die Mailingliste Talk-de