[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