thomas91
Goto Top

Benötige Hilfe bei Regular Expression

Hallo,
ich benötige hilfe bei einem Regularen Ausdruck:

/Koord[\.\s]+WGS-(?P<direction>[NE])[\s:]+(?P<coordinate>[0-9\.]+) /i

dieser sollte wenn möglich ohne /ig auf zwei Zeilen einen treffer verursachen:

Koord. WGS-E : 9.8247876439
Koord. WGS-N : 49.5694479485

Gruß

Thomas

Content-Key: 331982

Url: https://administrator.de/contentid/331982

Printed on: April 16, 2024 at 08:04 o'clock

Member: rubberman
rubberman Mar 12, 2017 at 22:05:00 (UTC)
Goto Top
Hallo Thomas,

etwa so, würde ich sagen.
Koord\.\sWGS-[EW]\s:\s\d+\.\d+[\r\n]Koord\.\sWGS-[NS]\s:\s\d+\.\d+
https://regex101.com/r/dknqWS/1

Grüße
rubberman
Member: Thomas91
Thomas91 Mar 12, 2017 at 22:10:52 (UTC)
Goto Top
Ich möchte danach die Koordinaten foglich in eine Variable speichern ( ,N, E)

$koordinaten = "{$treffer['coordinate'][1]} {$treffer['coordinate']}";  

Bei dem von dir geposteten Code gibt es nur einen Match über alles hinweg. Ich benötiger aber nur die Koordinaten in zwei treffern.
Member: rubberman
rubberman Mar 12, 2017 updated at 23:37:54 (UTC)
Goto Top
Dann musst du es noch gruppieren. https://regex101.com/r/dknqWS/2
Von welcher Sprache reden wir denn?

EDIT:
Aus dem was du geschrieben hast zusammengereimt:
https://regex101.com/r/dknqWS/3
$koordinaten = ($treffer['direction']=='E') ? "$treffer['coordinate2'] $treffer['coordinate1']" : "$treffer['coordinate1'] $treffer['coordinate2']";  
Member: Thomas91
Thomas91 Mar 13, 2017 at 06:47:47 (UTC)
Goto Top
Das ganze ist in PHP.

Ist es auch möglich das man nur eine group coordinaten hat und match1 und 2?
Member: rubberman
rubberman Mar 13, 2017 at 07:14:32 (UTC)
Goto Top
Hmm. Ich habe keine Ahnung von PHP, aber der verlinkte Regex-Tester ist auf PHP gestellt. Wenn du da versuchst beide Koordinaten nur mit <coordinate> zu benennen, gibt es einen Fehler. Probier's einfach selbst, du kannst dort nach Belieben ändern.
Du könntest natürlich ohne Named Captures arbeiten und herkömmlich per Index zugreifen. Das entspricht dann etwa meiner oben verlinkten Version 2.

Grüße
rubberman
Mitglied: 132692
132692 Mar 13, 2017 updated at 11:08:08 (UTC)
Goto Top
<?php
$string = "Koord. WGS-E : 9.8247876439\r\nKoord. WGS-N : 49.5694479485";  
$result = preg_match('/^Koord\.\sWGS-(?<lng>[EW])\s*:\s*(?<lngwert>[\d\.]+)\s*^Koord\.\sWGS-(?<lat>[NS])\s*:\s*(?<latwert>[\d\.]+)/mi',$string,$matches);  
if($result){
    echo $matches['lng'] . $matches['lngwert'] . "," . $matches['lat'] . $matches['latwert'];  
}else{
   echo "No match";  
}
?>
P.