Regex Problem

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Artentus.

    Regex Problem

    Hi,
    irgendwie funktioniert Regex nicht so wie es sollte. Was ist hier falsch?:

    VB.NET-Quellcode

    1. Dim s As String = "2013-05-29 23:23:36 [INFO] Spielername[/127.0.0.1:60159] logged in with entity id 532 at ([world] -259.38370679931126, 70.0, 19.434597420861706)"
    2. Dim reg As New Regex("2013-05-29 23:23:36 [INFO] (?<player>(.*?))[/127.0.0.1:60159] logged in with entity id 532 at ([world] -259.38370679931126, 70.0, 19.434597420861706)")
    3. Dim matches As MatchCollection = reg.Matches(s)
    4. MessageBox.Show(matches(0).Groups("player").Value)


    Ist da irgendein Zeichen drin, welches Regex nicht mag? Hier geht es ja:

    VB.NET-Quellcode

    1. Dim s As String = "<Content:<Hallo>>"
    2. Dim reg As New Regex("<Content:<(?<txt>(.*?))>>")
    3. Dim matches As MatchCollection = reg.Matches(s)
    4. MessageBox.Show(matches(0).Groups("txt").Value)


    Danke für eure Hilfe :)
    Mfg
    Vincent

    Okay:
    Ich möchte, dass mir 'Spielername' ausgegeben wird. Stattdessen kommt ein Fehler:

    Quellcode

    1. Eine nicht behandelte Ausnahme des Typs "System.ArgumentOutOfRangeException" ist in System.dll aufgetreten.
    2. Zusätzliche Informationen: Das angegebene Argument liegt außerhalb des gültigen Wertebereichs.
    Mfg
    Vincent

    @VincentTB
    Und RegEx sollte in diesem Fall auch dazu da sein die Struktur zu prüfen.

    VB.NET-Quellcode

    1. Dim s As String = "2013-05-29 23:23:36 [INFO] Spielername[/127.0.0.1:60159] logged in with entity id 532 at ([world] -259.38370679931126, 70.0, 19.434597420861706)"
    2. Dim reg As New Regex("[0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}(.*?)\[INFO\](?<player>(.*?))\[\/[0-9]{2,3}")
    3. Dim matches As MatchCollection = reg.Matches(s)
    4. For Each m As Match In matches
    5. If m.ToString().Length > 0 Then
    6. MessageBox.Show(m.Groups("player").Value)
    7. End If
    8. Next


    (Bitte jmd. sagen wenn man dieses ewige immer "[0-9]" schreiben irgendwie weglassen kann :) )
    LaMiys Code funktioniert
    Danke, @LaMiy und eine Sache noch: natürlich war die Endlösung dann mit noch ner Gruppe für die IP, also nix statisch ;)
    Ok, dann gehe ich davon aus, dass die Backslashes es als normalen Text machen. Ein Backslash vor die Eckigen Klammern und einer nach dem letzten Buchstaben, denke ich mal?!

    Danke an euch

    @ErfinderDesRades gucke mir das Morgen mal an, bin jetzt zu müde
    Mfg
    Vincent