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