Подобные вопросы уже задавались ранее, но я не могу найти ничего, что бы соответствовало моему сценарию. Мне нужно регулярное выражение, которое соответствует, только если определенная строка была найдена только один раз в нескольких строках. Учитывая следующие строки:
20 7c2f.80e9.0b33 DYNAMIC Gi1/0/27
20 7c2f.80ee.c28c DYNAMIC Gi1/0/47
20 7c2f.80ee.c2af DYNAMIC Gi1/0/47
20 7c2f.80ee.c2fb DYNAMIC Gi1/0/47
20 7c2f.80f3.6daa DYNAMIC Gi1/0/32
20 7c2f.80f3.6df9 DYNAMIC Gi1/0/47
20 7c2f.80f6.f3c8 DYNAMIC Gi1/0/30
20 7c2f.80f6.f3fd DYNAMIC Gi1/0/29
Мне нужно регулярное выражение, которое соответствует, только если интерфейс был найден один раз в строке. Что у меня пока, но не работает:
(Gi1\/0\/47)[\S\s]*(?!Gi1\/0\/47)
Проверьте это здесь: https://regex101.com/r/39yJWm/1
Так, например, если я проверю с Gi1 / 0/27 , он должен получить совпадение, потому что это происходит только один раз. Если я проверю с Gi1 / 0/47 , это не должно дать совпадения, потому что это происходит 4 раза. Вам нужно только рассмотреть одну проверку интерфейса в регулярном выражении, так как я буду каждый раз повторять результаты с другим интерфейсом.