Как написать регулярное выражение для получения вывода из третьей строки для этого выражения - PullRequest
0 голосов
/ 13 мая 2019
Netvisor OS Command Line Interface 5.1
Connected to Switch ugui-9kleaf1; nvOS Identifier:0xb00163e; Ver: 5.1.0-5010014593
Warning! ugui-9kleaf1's time is not in sync with the NTP Server.
CLI (network-admin@ugui-9kleaf1) > fabric-node-show format name no-show-headers

enter image description here

имя

ugui-9kleaf1
ugui-9kleaf2
Warning! ugui-9kleaf1's time is not in sync with the NTP Server.

Это мое выражение

Я попробовал следующее регулярное выражение

r">.*[\r\n]?(.*)"

Вывод, который я получаю, -

fabric-node-show format name, no-show-headers
ugui-9kleaf1
ugui-9kleaf2
Warning! ugui-9kleaf1's time is not in sync with the NTP Server.

Я хочу фактический вывод.

ugui-9kleaf1
ugui-9kleaf2
Warning! ugui-9kleaf1's time is not in sync with the NTP Server.

Приведенное выше регулярное выражение захватывает (команда + вывод), но мне нужен только фактический вывод.

Netvisor OS Command Line Interface 5.1
Connected to Switch ugui-9kleaf1; nvOS Identifier:0xb00163e; Ver: 5.1.0-5010014593
Warning! ugui-9kleaf1's time is not in sync with the NTP Server.
CLI (network-admin@ugui-9kleaf1) >
Символ

> в моем регулярном выражении пропустит баннер моего регулярного выражения.

Команда: имя формата fabric-node-show, no-show-headers
выведите то, что я получаю: fabric-node-show format name, no-show-headers ugui-9kleaf1 ugui-9kleaf2 Warning! ugui-9kleaf1's time is not in sync with the NTP Server.

Вывод я хочу.

ugui-9kleaf1 ugui-9kleaf2 Warning! ugui-9kleaf1's time is not in sync with the NTP Server.

Приведенное выше регулярное выражение захватывает (команда + вывод), но мне нужен только фактический вывод.

Примечание. Команды могут время от времени меняться, поэтому я могу жестко задавать значение. поэтому я хочу использовать регулярное выражение, в котором каждый раз регистрируется только вывод.

1 Ответ

0 голосов
/ 14 мая 2019

Я попробовал следующее регулярное выражение

r">.*[\r\n]?(.*)"

Это почти все.Как мы видим на вашем изображении, группа совпадений 1 (зеленая) содержит первую строку желаемого результата, поэтому нам просто нужно расширить группу совпадений 1 до конца.Для этого мы можем использовать флаг s ( точка соответствует символу новой строки ), но не для всего регулярного выражения (поскольку он не должен применяться к первому .), только для группы 1, поэтомумы должны использовать встроенный модификатор (?s):

r">.*[\r\n]?((?s).*)"

смотреть онлайн.

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