以下是来自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
非常感谢您的帮助。
答案 0 :(得分:0)
您可以使用
302020: Built inbound.*faddr\s+([^\/]*)\/\d+(.*(gaddr\s+([^\/]+))\/(\d+) laddr([^\/]+)\/\d+)(?:\s*\(([^()]*)\))?
请参见regex demo
最后一个(.*)
捕获组刚刚捕获了所有文本到该行的末尾。我将其替换为(?:\s*\(([^()]*)\))?
,这是一个与1次或0次匹配的可选非捕获组
\s*
-超过0个空格\(
-一个(
字符([^()]*)
-捕获组:(
和)
以外的0个以上的字符\)
-一个)
字符。