Регулярное выражение многострочной группы python
Я пытаюсь извлечь имя mpath "DS4800_VG_STAGE*" и количество сетевых путей из вывода команды multipath -ll.
DS4800_VG_STAGE_2 (3600a0b80004710ce00001ce24e08ce1c) dm-6 IBM, 1815 FAStT
[size = 241G] [features = 1 queue_if_no_path] [hwhandler = 1 rdac] [rw]
\ _ round-robin 0 [prio = 100] [active]
\ _ 1: 0: 1: 5 SDC 8:32 [активно] [готово]
\ _ round-robin 0 [prio = 0] [включено]
\ _ 2: 0: 1: 5 sdf 8:80 [активный] [призрак]
DS4800_VG_STAGE_1 (3600a0b80004706be00001ece4e08ca4f) dm-8 IBM, 1815 FAStT
[size = 24112G] [features = 1 queue_if_no_path] [hwhandler = 1 rdac] [rw]
\ _ round-robin 0 [prio = 100] [active]
\ _ 1: 0: 1: 5 SDC 8:32 [активно] [готово]
\ _ round-robin 0 [prio = 0] [включено]
\ _ 2: 0: 1: 5 sdf 8:80 [активный] [призрак]
Мне удалось извлечь имя пути, но я с трудом собираю оставшуюся часть многострочного вывода в одну группу, чтобы я мог обработать, сколько путей онлайн в group2.
^(\w+\s+).+?$$((?:[^\\\\]+\n+)+)
Match1:Group 1 = "DS4800_VG_STAGE_2"
Group 2 = "[size=241G][features=1 queue_if_no_path][hwhandler=1 rdac][rw]"
Match2:Group 1 = "DS4800_VG_STAGE_1"
Group 2 = "[size=24112G][features=1 queue_if_no_path][hwhandler=1 rdac][rw]"
Любая помощь могла бы быть полезна.
заранее спасибо
1 ответ
Попробуйте использовать это вместо:
^(\w+\s+).+?$$\n((?:.+?\n+)+)
Я думаю, что в вашем выражении вы используете [^\\], что предотвращает попадание любой строки с обратной косой чертой в выражение. Но каждая строка (после первых двух "строк заголовка") начинается с обратной косой черты.