Регулярное выражение Python для сопоставления нескольких слов в строке без перехода на следующую строкуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Регулярное выражение Python для сопоставления нескольких слов в строке без перехода на следующую строку

Сообщение Anonymous »

Я пишу синтаксический анализатор для анализа приведенного ниже вывода:

Код: Выделить всё

    admin@str-s6000-on-5:~$ show interface status Ethernet4
Interface        Lanes    Speed    MTU         Alias    Vlan    Oper    Admin            Type    Asym PFC
---------------  -----------  -------  -----  ------------  ------  ------  -------  --------------  ----------
Ethernet4  29,30,31,32      40G   9100  fortyGigE0/4   trunk      up       up  QSFP+ or later         off
PortChannel0001          N/A      40G   9100           N/A  routed      up       up             N/A         N/A
PortChannel0002          N/A      40G   9100           N/A  routed      up       up             N/A         N/A
PortChannel0003          N/A      40G   9100           N/A  routed      up       up             N/A         N/A
PortChannel0004          N/A      40G   9100           N/A  routed      up       up             N/A         N/A
Я попытался написать регулярное выражение, соответствующее всем полям, как показано ниже.

Код: Выделить всё

(\S+)\s+([\d,]+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+([up|down])+\s+([up|down]+)\s+([\w\s+?]+)\s+(\S+)
Я могу правильно перейти в столбец «Администратор». Тип столбца содержит несколько слов, поэтому я использовал шаблон ([\w\s+?]+), надеясь, что он будет соответствовать нескольким рабочим данным, разделенным одним пробелом, где + является необязательным, за которым следует (\S+) чтобы соответствовать последнему столбцу. Проблема, с которой я сталкиваюсь, заключается в том, что регулярное выражение ([\w\s+?]+) порождает несколько строк и дает мне результат, как показано ниже.

Код: Выделить всё

Ethernet4  29,30,31,32      40G   9100  fortyGigE0/4   trunk      up       up  QSFP+ or later         off PortChannel0001          N/A 
Я вижу, что \s также соответствует новой строке. как ограничить это, чтобы оно не соответствовало новой строке? может кто-нибудь, пожалуйста, помогите мне разъяснить.
Я посмотрел на это регулярное выражение для одного или нескольких слов, разделенных пробелами, но это мне тоже не помогло. может кто-нибудь помочь мне понять это лучше?

Подробнее здесь: https://stackoverflow.com/questions/788 ... -next-line
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»