1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

[Regex] Zeile erfolgreich parsen

Dieses Thema im Forum "Sonstige Sprachen" wurde erstellt von Cappaja, 10. Februar 2015.

  1. Cappaja

    Cappaja Erfahrenes Mitglied

    Servus,

    ich bekomme es nicht hin folgende Zeile so zu parsen, dass lediglich die Revision Nummer angezeigt wird.
    Code (Text):
    1.    5129 User        46613 Jan 23 13:23 ROOT/Hysteresis/test_file.c
    Mittels
    Code (Text):
    1. [0-9]+
    bekomme ich alle numerischen Werte, ich will aber nur den ersten, die 5129.
    a) Wie schaffe ich es den Rest (alles nach 5129) auszublenden?
    b) Wie schaffe ich es nur die Werte 5129 und 13:23 zu bekommen?

    Ist für geübte Nutzer von regex denke ich schnell zu lösen ;)

    Beste Grüße

    Cappaja
     
  2. Yaslaw

    Yaslaw n/a Moderator

    Kommt auf die Applikation drauf an.

    Aber etwa so könnte es gehen
    Code (Text):
    1. ^[ ]*([0-9]+)
    ^ Zeilenanfang
    [ ]* Beliebige Anzahl Leerzeichen
    () Auszugebendes Resultat
    [0-9]+ Beliebige Anzahl Ziffern, mindestens Eine
     
    Cappaja gefällt das.
  3. Cappaja

    Cappaja Erfahrenes Mitglied

    Danke für die schnelle Antwort, das hatte zunächst leider auch nicht funktioniert.
    Ich habe den regex bislang via SVN Kommandozeile über grep -o "regex" abgesetzt.
    Habe jetzt eine Alternative mit egrep -o "regex" gefunden bei der es halbwegs funktioniert. Das Ende wird zwar abgeschnitten allerdings bleiben die Leerzeichen davor bestehen. Scheint ein spezifisches Problem zu sein, hat mir dennoch weitergeholfen, danke!
     
  4. Spyke

    Spyke Capoeirista Premium-User

    Hab mal aus langerweile bissel rumgespielt:
    Code (Text):
    1. ^\W+([0-9]+)\W+[^\W]+\W+[0-9]+\W+[a-zA-Z]+\W+[0-9]{1,2}\W+([0-9]{1,2}\:[0-9]{1,2})
    Getestet mit der .Net Engine von regexlib.com

    Um den 'User' (klingt nach als könnten hier später irgendwelche Nutzernamen auftauchen) auszuschließen und nicht unbedingt Sonderzeichen mit abhandeln zu müssen sind einfach alle nicht whitespace zeichen erstmal als treffer erlaubt [^\W]+

    Ansonsten halt ganz primitiv:
    1. Whitespace -> \W+
    2. Zahl suchen (als match) -> ([0-9]+)
    3. Whitespace -> \W+
    4. alles was nicht whitespace ist ('user') -> [^\W]+
    5. Whitespace -> \W+
    6. irgend ne nummer -> [0-9]+
    7. whitespace -> \W+
    8. Monat -> [a-zA-Z]+
    9. whitespace -> \W+
    10. Tag -> [0-9]{1,2}
    11 Whitespace -> \W+
    12. Uhrzeit -> ([0-9]{1,2}\:(0-9]{1,2})


    2: 5129 (Match)
    4: User
    6: 46613
    8: Jan
    10: 23
    12: 13:23 (Match)
     
Die Seite wird geladen...