[Talk-de] PERL RE

Dirk Stöcker openstreetmap at dstoecker.de
Mi Okt 8 14:46:34 UTC 2008


On Wed, 8 Oct 2008, Gary at gary68.de wrote:

> Hi,
>
> ich habe Zeilen wie folgt:
>
> putAJAXMarker(18053,8.020974,50.164928,"roads do intersect on same layer but
> don't share a common node. bridge/tunnel or connection? please check.
> [Gary68]<hr />fixed [PHerison]",1);
> putAJAXMarker(18448,8.162421,50.132761,"brücke fehlt? [Gary68]",1);
> putAJAXMarker(16773,8.119601,50.227869,"there might be a bridge missing?
> please check. [Gary68]",0);
>
> Und möchte mit RE folgendes extrahieren:
>
> - die zweite und dritte Zahl, lat und lon
>
> Ich habe folgenden Code:
>
> my ($lon) = ($line =~ /^.+\,([-\d,\.]+)\,/);
> my ($lat) = ($line =~ /^.+,[-\d,\.]+,([-\d,\.]+),/);
>
> Der mir aber beide Male lat ausgibt, also die 50.x
>
> Kann das jemand korrigieren bitte?
>
> Und ich benötige noch eine RE für die letzte Zahl am Ende, wenn schon mal
> ein Experte dran ist.
>
> Irgendwie kriege ich das mit den Kommas nicht hin, oder?

($lon,$lat,$last) = /\(\d+,(\d+\.\d+),(\d+\.\d+),.+,(\d+)\)/

Zeilen zusammenbasteln überlasse ich Dir, obiges geht so nur, wenn der 
String in einer Zeile ist.

Zerhackt in zwei Teile:

($lon,$lat) = /\(\d+,(\d+\.\d+),(\d+\.\d+),/
($last) = /,(\d+)\)/

Ciao
-- 
http://www.dstoecker.eu/ (PGP key available)


Mehr Informationen über die Mailingliste Talk-de