Wpis z mikrobloga

Serwus. Potrzebuję pilnej pomocy z regexem.
Chciałbym sobie wyłapać współrzędne geograficzne ze stringa tak żeby niezależnie od tekstu przed, separatora lub tekstu po wartościach koordynatów, tekst został rozpoznany.
Przykład:
TEXT52.405449TEXT16.883359TEXT

Jakieś pomysły?

#programowanie #regexp
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ojsak: no to:

[^0-9]*([0-9]+\.?[0-9]*)[^0-9]*([0-9]+\.?[0-9]*)[^0-9]*
maczuje całą linijkę i masz w pierwszej podgrupie pierwszą współrzędną a w drugiej drugą. Nie testowane - może z eskejpowaniem coś masz inaczej zależnie od języka.
  • Odpowiedz
@tell_me_more: zdecydowanie zbyt liberalny ten regex, matchuje jezeli nie ma drugiej współrzędnej w parze, albo akceptuje też wartości większe niż 180, wykombinuję coś innego. ale w każdym razie dzięki
  • Odpowiedz
@ojsak: a rzeczywiście, żeby nie matchował jak nie ma drugiej współrzędnej trzeba * w środku zmienić na + :

[^0-9]*([0-9]+\.?[0-9]*)[^0-9]+([0-9]+\.?[0-9]*)[^0-9]*
A zmianę na 0-180 zostawiam jako ćwiczenie :)
  • Odpowiedz