В своем регулярном выражении вы используете \s.+
, где .+
будет соответствовать любому символу, кроме новой строки.Я думаю, вы имеете в виду соответствие 1+ пробельных символов, которые можно записать как \s+
без точки.
Вы также избегаете \H
, который может быть просто H
.Вы также можете опустить флаг без учета регистра, так как точка будет соответствовать символам верхнего и нижнего регистра.
Ваше регулярное выражение может выглядеть следующим образом:
(?sm)^Port\s+Name\s+Status\s+Vlan\s+Duplex\s+Speed\sType\r\n.*End Here$
Regex demo
Не используя опцию, что точка может соответствовать новой строке, вы можете использовать:
^Port\s+Name\s+Status\s+Vlan\s+Duplex\s+Speed\sType\r\n(?:.*\r\n)*?End Here$
Это будет соответствовать
^
Утверждениеначало строки Port\s+Name\s+Status\s+Vlan\s+Duplex\s+Speed\sType
Совпадение буквально сопровождается 1+ пробельными символами, но после Speed только один пробельный символ \r\n
Совпадение CR + LF (?:
Группа без захвата .*\r\n
Соответствует любому символу, кроме новой строки, за которым следует CR + LF
)*?
Закрыть группу без захвата и повторить 0+ раз безжадный $
Утверждение конца строки
Regex demo