Regex Ordnung

  • Allgemein

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Regex Ordnung

    Hallo Zusammen!

    Ich suche eine Möglichkeit mithilfe eine Regex eine sortierte Suche durchzuführen.

    Beispiel: Ich habe den String
    Name Klein Vorname Marvin

    Nun möchte ich gerne mithilfe von Regex Marvin Klein ausgeben.

    Leider ist es in meiner Situation nicht möglich einfach in einer Programmiersprache die entsprechenden Gruppen abzufragen um dann den passenden String zusammenzu bauen. Ich brauche es wirklich als reinen Regex, der mir nur Marvin Klein zurückgibt. Also erst den Vornmane, dann den Nachnamen.

    Mit Gruppen komme ich schonmal soweit, dass ich beide Namen habe, gibt es aber noch eine Möglichkeit diese direkt im regex in bestimmer Reihenfolge als Fullmatch zurückzugeben? Oder gibt es eine andere Möglichkeit, dass ganze mit Regex only zu lösen?

    Hier mal mein derzeitiger Fortschritt:
    Name\s+?(?P<last>[\w]+)\s+?Vorname\s+?(?P<first>[\w]+)

    Viele Grüße
    Marvin
    was bedeutet...
    eine sortierte Suche


    die einzelnen elemente kannst du mit split auseinander nehmen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim text As String = "Name Klein Vorname Marvin"
    3. Dim s1 As String() = Split(text, " ")
    4. For Each item In s1
    5. TextBox1.Text = s1(3) & " " & s1(1)
    6. Next
    7. End Sub


    also s(0) ist das erste element = Name
    s(0) = Name
    s(1) = ...
    etc....
    etc.....
    Ich würde keinesfalls mit String.Split arbeiten (zumindest nicht bei Blank splitten).
    Das funktioniert vielleicht bei Name Klein Vorname Marvin.
    Aber bei Name zu Guttenberg Vorname Karl Theodor wird es ganz schnell eng.
    Ich würde da auf jeden Fall die Strings zwischen "Name " und " Vorname " sowie zwischen " Vorname " und Ende rausfiltern.

    Und wenn der jetzt seinen Dr. noch hätte, kannst du nochmals überlegen, was du filtern müsstest, um aus
    Name Dr. zu Guttenberg Vorname Karl Theodor den ​Dr. Karl Theodor zu Guttenberg zu kriegen.
    Adressen zu parsen ist eine kleine Wissenschaft.
    Und früher oder später wirst du auf Konstrukte treffen, die du im Regelwerk nicht bedacht hast..
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    Ich verweise hier nochmal auf meinen Hinweis oben:
    Leider ist es in meiner Situation nicht möglich einfach in einer Programmiersprache die entsprechenden Gruppen abzufragen

    Demnach brauche ich eine Regex onlxy Lösung. Keine Programmiersprache anwendbar.