Я пытаюсь написать регулярное выражение для анализа файла журнала, созданного несколькими сотнями наших маршрутизаторов.Журнал - это скрипт, который пытается пропинговать каждый из других маршрутизаторов в среде.Это для соответствия, чтобы доказать, что мы не можем пропинговать каждый из других маршрутизаторов в среде.Журналы выглядят подобно следующему отрывку (только намного больше).
Interface Name = INTNET1
IP Address = 192.168.200.200,
---PING Section---
PING 192.168.200.200: 56 data bytes
64 bytes from 192.168.200.200: icmp_seq=0. time=0. ms
64 bytes from 192.168.200.200: icmp_seq=1. time=0. ms
----192.168.200.200 PING Statistics----
2 packets transmitted, 2 packets received, 0% packet loss
round-trip (ms) min/avg/max = 0/0/0
no answer from 192.168.12.13
no answer from 192.168.151.1
no answer from 192.168.19.1
no answer from 192.168.84.1
64 bytes from 192.168.100.100: icmp_seq=0. time=0. ms
64 bytes from 192.168.100.100: icmp_seq=1. time=0. ms
----192.168.100.100 PING Statistics----
2 packets transmitted, 2 packets received, 0% packet loss
round-trip (ms) min/avg/max = 0/0/0
Поскольку все маршрутизаторы перечислены в сценарии, каждый маршрутизатор пропингует себя и получает положительный ответ.Используя это, чтобы собрать mgmt маршрутизатора.IP:
IP\sAddress\s*\=\s*(?<MGMTIP>.*)
Я хочу негативно посмотреть на совпадения следующего шаблона (строки статистики PING)
\-\-\-\-(.*)\-\-\-\-
и совпадать только в том случае, если адрес не совпадаетс названной группой.Я уже давно над этим работаю и просто не могу заставить его работать.
РЕДАКТИРОВАТЬ: Интересно, не слишком ли это усложняю?Все, что мне действительно нужно из всего этого строкового блока, - это сопоставить любые строки с этим шаблоном:
\-\-\-\-(.*)\-\-\-\-
Но захватить часть '(. *)', Только если она не соответствует Группе 1 из этого шаблона(соответствует IP-адресу хоста, выдающего эхо-запросы)
IP\sAddress\s*\=\s*(.*)