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

Ausgedruckt am: 19.03.2024 um 08:03 Uhr

Mitglied: rubberman
rubberman 12.03.2017 um 23:05:00 Uhr
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
Mitglied: Thomas91
Thomas91 12.03.2017 um 23:10:52 Uhr
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.
Mitglied: rubberman
rubberman 12.03.2017, aktualisiert am 13.03.2017 um 00:37:54 Uhr
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']";  
Mitglied: Thomas91
Thomas91 13.03.2017 um 07:47:47 Uhr
Goto Top
Das ganze ist in PHP.

Ist es auch möglich das man nur eine group coordinaten hat und match1 und 2?
Mitglied: rubberman
rubberman 13.03.2017 um 08:14:32 Uhr
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 13.03.2017 aktualisiert um 12:08:08 Uhr
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.