Serverlog mithilfe von Regular Expression auswerten?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Schaf220
User
Beiträge: 113
Registriert: Montag 11. August 2008, 16:00
Wohnort: Bremen
Kontaktdaten:

Hallo liebe Community,

ich habe folgendes Problem. Soo ich habe einen Logfile eines GameServers der so aussieht:

4289:44 K;31019120;9;allies;[Out]Buccaneer;1528214;10;axis;[Out]TiRiTh;ak74u_reflex_mp;40;MOD_PISTOL_BULLET;torso_lower
4289:45 K;1528214;10;axis;[Out]TiRiTh;84655;3;allies;[Out]JouleS;kiparis_silencer_mp;30;MOD_RIFLE_BULLET;torso_lower
4289:46 D;10426877;1;allies;SKSB_Smarties;1528686;2;axis;[Out]Desteny;frag_grenade_mp;15;MOD_IMPACT;left_foot
.
.
.

meine erste Idee war es die gesuchten Abschnitte(fett gedruckt) mit find() zu suchen und herauszufiltern. Dann habe ich einen Tipp bekommen, das mit Regular Expression zu machen. Das Modul hab ich mir dann angesehen und auch die Beispiele dazu. Hier die Page: http://www.tutorialspoint.com/python/py ... ssions.htm. Ich muss ja das ";" als Trennzeichen nehmen, aber ich komm trotz der Hilfe, der Page nicht weiter, weil ich nicht verstehe wie ich mir den Pattern bauen soll. Bei manchen Beispielen sehen die pattern so aus:

Code: Alles auswählen

foo = ' [9764327]  =  ["oasdsas"] # ["agfdgdffff"]'
m = re.search(r"=\s*\[([^\]]*)", foo)
print(m.group(1))
Aber ich kann hier gar nicht verstehen für was die zeichen in diesem Fall stehen(auch mit der Dokumentation nicht). Könnte mir jemand das vielleicht erklären? Brauche ich überhaupt Regular Expression?

Code: Alles auswählen

  matchObj = re.search( r';(.*);(.*)(\.*)', line, re.M|re.I)
              print "matchObj.group(1) : ", matchObj.group()

Mit freundlichen Grüßen
schaf220
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Schaf220 hat geschrieben:Aber ich kann hier gar nicht verstehen für was die zeichen in diesem Fall stehen(auch mit der Dokumentation nicht). Könnte mir jemand das vielleicht erklären? Brauche ich überhaupt Regular Expression?
Natuerlich steht es in der Dokumentation: http://docs.python.org/howto/regex.html
Und nein, du brauchst keine RegExp. Das csv-Modul ist hier ausreichend.
Antworten