正则表达式捕获在所有事件上不一致的IP地址和用户名

问题描述 投票:1回答:1

以下是来自ASA的一些日志,我需要捕获以下组的IP地址,序号(本例中为3327)和用户名(abcd_user.name)。

我试过跟随正则表达式,但用户名是用括号捕获。

https://regex101.com/r/NbyYyp/1

Feb 10 13:22:55 90.23.222.10 : %ASA-6-302020: Built inbound ICMP connection for faddr 10.34.27.20/0 gaddr 10.23.24.2/33327 laddr 10.23.24.2/33327    
Feb 10 13:22:51 90.27.29.8 : %ASA-6-302020: Built inbound ICMP connection for faddr 90.23.40.16/1(LOCAL\abcd_user.name) gaddr 172.20.220.27/0 laddr 172.20.20.7/0 (abcd_user.name)    
Feb 10 13:22:55 90.22.22.15 : %ASA-6-302020: Built inbound ICMP connection for faddr 10.34.27.2/0 gaddr 10.34.21.29/33327 laddr 10.34.21.29/33327

非常感谢您的帮助。

pcre
1个回答
0
投票

你可以用

302020: Built inbound.*faddr\s+([^\/]*)\/\d+(.*(gaddr\s+([^\/]+))\/(\d+) laddr([^\/]+)\/\d+)(?:\s*\(([^()]*)\))?

regex demo

最后一个(.*)捕获组刚刚将所有文本捕获到该行的末尾。我用(?:\s*\(([^()]*)\))?替换它,\s*是一个匹配1或0次出现的可选非捕获组

  • \( - 0+空格
  • qazxsw poi - 一张qazxsw poi图表
  • ( - 捕获组:除了([^()]*)(之外的任何0+字符
  • qazxsw poi - 一张qazxsw poi图表。
© www.soinside.com 2019 - 2024. All rights reserved.