2016-07-22 28 views
1

Ich muss den folgenden Regex Feinabstimmung. Gerade jetzt gibt es mir, dstip, srcport, dstport und Datum. Ich brauche es, um mir auch das Protokoll (UDP, TCP) zu geben. Hier ist die Linie, muss sie analysieren:Python Regex Parser

03/09-13:00:59.136048 [**] [1:2003410:9] ET POLICY FTP Login Successful [**] [Classification: Misc activity] [Priority: 3] {TCP} 172.16.112.100:21 -> 206.48.44.18:1039 

Hier ist meine aktuelle Regex:

([0-9/]+)-([0-9:.]+)\s+.*?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})\s+->\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5}) 

Zusätzlich ist es muss in der Lage sein, um Anfragen zu bearbeiten, die keine Ports, die mit ihnen (wie ICMP) :

03/09-13:57:26.523602 [**] [1:2100368:7] GPL ICMP_INFO PING BSDtype [**] [Classification: Misc activity] [Priority: 3] {ICMP} 172.16.114.50 -> 172.16.112.207 

Antwort

1

Diese Regex sollte arbeiten, was Sie wollen:

([0-9\/]+)-([0-9:.]+)\s+.*?\s\{(\w+)\}\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):?(\d{1,5})?\s+->\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):?(\d{1,5})? 

Ich habe \s\{(\w+)\}\s hinzugefügt, um das Protokoll zu entsprechen. Ich machte auch das Protokoll und den davor liegenden Doppelpunkt optional.