使用正则表达式解析 Cisco 系统日志

Parsing Cisco System Logs with Regex

我要解析三种类型的日志:

消息 #1: 为移动设备创建的长度为 (253) 的用户名条目(随机@somewhere.org)aa:aa:aa:aa:aa:aa

预期匹配:

消息 #2: 移动用户名条目 (hello) 已删除 aa:aa:aa:aa:aa:aa

预期匹配:

消息 #3 来宾用户使用用户帐户登录 (randomnonexistentuser) MAC 地址 aa:aa:aa:aa:aa:aa, IP 地址 127.0.0.1.

预期匹配:

到目前为止,我有这个正则表达式来识别 MAC 地址(在三个示例中的两个中标记为移动):https://regex101.com/r/qFE95M/14

我也有这个正则表达式...

(?P<IP_address>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})

...查找 IP 地址。但是,我不确定如何使那个命名组成为可选的并将它与 MAC 地址片段联系在一起。

终于,我有了这个正则表达式...

^[^\(\n]*\((?P<user_account>[^\)]+)\)

...查找用户名(可以是电子邮件地址、单个单词等)。但同样,我不确定如何将它与其他两个命名组联系起来。

如何将这三个匹配项协调在一起,以便在上面的三个消息中找到它们?

像这样的东西应该会给你命名组中的所有东西:https://regex101.com/r/qFE95M/15