Regex захватывает IP-адрес и имя пользователя, которые не согласованы во всех событиях - PullRequest
0 голосов
/ 25 февраля 2019

Ниже приведены некоторые журналы от ASA, мне нужно захватить следующую группу для IP-адреса, номера seq (в данном случае 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

Ваша помощь очень ценится.

1 Ответ

0 голосов
/ 25 февраля 2019

Вы можете использовать

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

См. Демонстрационную версию regex

Последняя группа захвата (.*) только что захватила весь текст до конца строки.Я заменил его на (?:\s*\(([^()]*)\))?, необязательную группу без захвата, которая соответствует 1 или 0 вхождениям

  • \s* - 0+ пробелов
  • \( - ( char
  • ([^()]*) - Группа захвата: любые 0+ символов кроме ( и )
  • \) - ) char.
...