2016-07-22 150 views
1

我需要微調下面的正則表達式。現在它給了我srcip,dstip,srcport,dstport和日期。我需要它也給我的協議(UDP,TCP)。下面是它需要解析線:Python的正則表達式解析器

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 

這裏是我當前的正則表達式:

([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}) 

此外,它需要能夠處理沒有與之相關聯的端口的請求(如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 

回答

1

此正則表達式應該與你想要什麼工作:

([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})? 

我已添加\s\{(\w+)\}\s以匹配協議。我也使協議和冒號在它之前是可選的。