Регулярное выражение многострочной группы 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+)+)

Я думаю, что в вашем выражении вы используете [^\\], что предотвращает попадание любой строки с обратной косой чертой в выражение. Но каждая строка (после первых двух "строк заголовка") начинается с обратной косой черты.

Другие вопросы по тегам