Python Regex Parser

Мне нужно точно настроить следующее регулярное выражение. Прямо сейчас он дает мне srcip, dstip, srcport, dstport и дату. Мне нужно, чтобы он также дал мне протокол (UDP, TCP). Вот строка, которую нужно проанализировать:

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 чтобы соответствовать протоколу. Я также сделал протокол и двоеточие, предшествующее ему, необязательным.

Другие вопросы по тегам