Предположим, у нас есть следующие 2 строки.
строка - 1: (полная строка)
char = "port : id 0xa30 State INIT-DOWN (Admin Down | Port Disabled/Link status unknown) Rate 8100 MeasuredBw 18097"
строка - 2: (если часть строки отсутствует. Т.е. строка ' Rate 8100 MeasuredBw 18097'
отсутствует)
char = "port : id 0xa30 State DOWN (Admin Down, Link Down, ODU Up, CCP Up)"
Итак, я могу проверить строку, если часть строки присутствует или нет.Но проблема в том, что когда строка присутствует, я не могу сопоставить строку.
Регулярное выражение, которое я придумал: (хотя и не самое лучшее)
re.search("port\s+:\s+id\s+(\w+)\s+State\s+(\w+-*\w*)[\(\w\)\|\/\s\,]*(?:Rate\s+(\w+)\s+MeasuredBw\s+(\w+))?", port_state1).groups()
Вывод:
('0xa30', 'DOWN', None, None) for both the string.
Ожидаемый результат:
String-1:
('0xa30', 'DOWN', '8100', '18097')
String-2:
('0xa30', 'DOWN', None, None)