Regex чтобы захватить все после слова vlan1 и перед строкой 100 vlan_mgmt - PullRequest
1 голос
/ 29 марта 2019

Мое регулярное выражение (?<=vlan1)(?s)(.*$) и оно захватило все после "vlan1".Я просто хотел захватить только все интерфейсы.Может ли кто-нибудь помочь мне изменить приведенное выше регулярное выражение для захвата только интерфейсов после vlan1 и до строки 100 vlan mgmt?

60 vlan1
fa0/1, fa0/2, fa0,3
fa0/4, fa05

100 vlan_mgmt

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Если вы хотите захватить значение, вы можете опустить положительный взгляд за (?<=vlan1) и сопоставить его, а затем использовать группу захвата для ваших значений. Внутри этой группы захвата повторите сопоставление всех строк, за которыми не следует новая строка, цифры 1+ и слово vlan

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

vlan1\n((?:(?!(?:\d+ vlan)).*(?:\n|$))+)

Это будет соответствовать

  • vlan1\n Соответствует vlan и newline
  • ( Группа захвата
    • (?: Группа без захвата
      • (?!(?:\d+ vlan)) Отрицательный взгляд вперед, не утверждать 1+ цифр, пробел и vlan
      • .* Соответствует любому символу, кроме новой строки 0+ раз
      • (?:\n|$) Соответствует новой строке или концу строки
    • )+ Закрыть группу без захвата и повторить 1+ раз
  • ) Закрыть группу захвата

Regex demo

0 голосов
/ 29 марта 2019

Попробуйте Regex: (?<=vlan1\n)(?s)(.*$)(?=\n100)

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...