Regex Position entweder oder

  • Allgemein

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Lightsource.

    Regex Position entweder oder

    Da ich mich gerade an Regulären Ausdrücken versuche, bin ich auf folgendes Problem gestoßen.
    Ich möchte testen, ob bestimmte Eingaben vorgegebenen Koordinatensystemsformaten entsprechen.
    Beispielsweise:

    49° 40′ 1.0″ N, 8° 27′ 47.2″ E

    habe ich mit:

    [0-8]?[0-9]° ?[0-5]?[0-9]' ?[0-5]?[0-9][\.]?[0-9]{0,}" ?[NS][ ,;] {0,}[0-1]?[0-8]?[0-9]° ?[0-5]?[0-9]' ?[0-5]?[0-9][\.]?[0-9]{0,}" ?[WOE]

    gefunden.
    Kann man mit Regex auch entweder/oder Muster vorgeben?
    Es kann z.B. sein, dass das N und das E vor den Zahlen steht. Also:

    N 49° 40′ 1.0″, E 8° 27′ 47.2″

    Allerdings sollten dann wirklich beide Richtungsangaben ( N und E ) vorne stehen.
    Geht so etwas, und wie?

    (Ich verwende VB2010)
    Ein "oder" machst du mit |

    Das Wetter ist (toll|richtig schlecht)
    In dem Beispiel ist das letzte Wort "toll " ODER "richtig schlecht", aber nicht beide.

    z.B. (N [0-8]?[0-9]°|E [0-8]?[0-9]°)
    Im Beispiel findet er dann z.B. N 49° ODER E 23°, aber nicht beide zusammen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „rdmguy“ ()

    Wenn ich diese Art von "Oder"-Funktion verwenden würde, müsste ich das Oder-Zeichen zwischen beide möglichen
    Alternativen setzen. Dadurch wird der Ausdruck doppelt so groß und noch unübersichtlicher.
    Ist das der einzige Weg?

    ( ganz durchgelesen hattest du meine Anfrage wohl nicht, oder? )

    Das sind die beiden Eingabemöglichkeiten:
    49° 40′ 1.0″ N, 8° 27′ 47.2″ E
    bzw.
    N 49° 40′ 1.0″, E 8° 27′ 47.2″

    Einmal steht N und E hinter den Zahlen, ein anderes Mal aber beide jeweils vor den Zahlen.
    Der Rest der Zahlenformatierung bleibt gleich.



    Für diese Formate
    49° 40.125' N, 8° 27.654' E
    N 49° 40.125', E 8° 27.654'
    habe ich jetzt:
    ([0-8]?[0-9]° ?[0-5]?[0-9][\.][0-9]{0,}' ?[NS][ ,;] {0,}[0-1]?[0-8]?[0-9]° ?[0-5]?[0-9][\.][0-9]{0,}' ?[WOE])|([NS] ?[0-8]?[0-9]° ?[0-5]?[0-9][\.][0-9]{0,}'[ ,;] {0,}[WOE] ?[0-1]?[0-8]?[0-9]° ?[0-5]?[0-9][\.][0-9]{0,}')

    Ich habe noch nicht alle Möglichkeiten getestet, aber geht das auch kürzer?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lightsource“ ()