Hilfe bei StrinRegExp

  • Hallo zusammen :)

    Ich hab einiges über StrinRsgExp gelernt, aber leider komme ich hier nicht weiter..

    Mit folgendem Pattern

    [autoit]

    $aResult = StrinRegExp($newline,"joined\s\((.*?)\,",3)

    [/autoit]


    suche ich in einer Text-Datei die Namen der Spieler die unser Clan Server betreten und zwar in den Zeilen mit Client joined....

    8 - Client joined (, 0x42B5FFFFFFFF, XXX.209.53.91:0, PeerId: 0, Seq: 0, Data size : 0) - Session ID: 0x7B1F
    318 - Client joined (Anonymous, 0x24F0130C63AC9332, XXX.209.53.91:0, PeerId: 0, Seq: 0, Data size : 0) - Session ID: 0x8FEF10662DF05445
    340 - Client joined (dysiek7, 0x8FAAD9E658DF515, XX.185.149.52:0, PeerId: 1, Seq: 1, Data size : 4) - Session ID: 0x8FEF10662DF05445
    356 - Client joined (HYENA_555, 0x188BA0351874E372, 192.168.1.XX:0, PeerId: 2, Seq: 2, Data size : 4) - Session ID: 0x8FEF10662DF05445
    367 - Client joined (Electrosystem, 0x4A08FF9FF9334F3D, XX.22.230.189:0, PeerId: 4, Seq: 4, Data size : 4) - Session ID: 0x8FEF10662DF05445
    383 - Client joined (DjMill1974, 0xD6221D295BEE260C, 192.168.1.X:0, PeerId: 6, Seq: 5, Data size : 4) - Session ID: 0x8FEF10662DF05445
    385 - Client joined (Bhodhi, 0x7525C3AD08557D9C, 192.168.1.X:0, PeerId: 5, Seq: 6, Data size : 4) - Session ID: 0x8FEF10662DF05445

    Ausgabe

    [0] =
    [1] = Anonymous
    [2] = dysiek7
    [3] = HYENA_555
    [4] = Electrosystem
    [5] = DjMill1974
    [6] = Bhodhi

    Es funktioniert gut aber leider werden auch die folgenden Zeilen mit einbegezogen.

    8 - Client joined (, 0x42B5FFFFFFFF, XXX.209.53.91:0, PeerId: 0, Seq: 0, Data size : 0) - Session ID: 0x7B1F
    318 - Client joined (Anonymous, 0x24F0130C63AC9332, XXX.209.53.91:0, PeerId: 0, Seq: 0, Data size : 0) - Session ID: 0x8FEF10662DF05445

    Wie kann ich die beiden Zeilen bei der suche auslassen oder ausklammern?

    Einmal editiert, zuletzt von VinceA (31. August 2013 um 21:12)

  • Code
    "joined\s\((.*?)\,"


    Das (.*?) heißt ja: Finde beliebiges Zeichen (Auser Zeilenumbruch), und zwar 0 bis n mal (Und halt nicht-gierig wegen dem "?").
    Wenn du (.+?) nimmst, hast du aber: Finde beliebiges Zeichen (Auser Zeilenumbruch), und zwar 1 bis n mal. Dann fällt die erste Fehlerzeile schonmal raus.

    Für den zweiten Fehlerfall (Anonymous) würde ich einfach _ArraySearch und _ArrayDelete über das Array laufen lassen.

    lg

  • Hallo chesstiger

    Ich habs mit

    Code
    "joined\s\((.+?)\,"


    probiert.

    Ausgabe

    [0] = , 0x3B8DFFFFFFFF
    [1] = Anonymous
    [2] = dysiek7
    [3] = HYENA_555
    [4] = Electrosystem
    [5] = DjMill1974
    [6] = Bhodhi

    Leider zeigt es jetzt .. , 0x3B8DFFFFFFFF.... an.
    Gibt es da keine andere Möglichkeit die Zeile
    8 - Client joined (, 0x42B5FFFFFFFF, XXX.209.53.91:0, PeerId: 0, Seq: 0, Data size : 0) - Session ID: 0x7B1F
    auszulassen?
    Oder muss ich hier auch mit _ArraySearch und _ArrayDelete arbeiten um... , 0x3B8DFFFFFFFF.. zu entfernen?


  • Ich denke, die einfachste Lösung wäre hier einfach mit _ArraySearch & _ArrayDelete den Eintrag zu löschen.
    Sollte ja nicht allzu schwer sein ^^

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski