В следующем коде я хотел бы записать идентификатор экземпляра, а затем текст под ним. Шаблон повторяется, поэтому существует несколько экземпляров с одинаковыми телами. Кажется, я не могу понять, как заставить его продолжить после сегментов новой строки.
import re
config = '''
Instance: evpn-a
VLAN ID: 123, MAC address: 00:05:86:71:05:f0
Source: irb.0, Rank: 1, Status: Active
State: <Local-MAC-Only Local-Gateway Remote-Adv-Allowed>
IP address: 192.168.10.251
VLAN ID: 123, MAC address: 00:05:86:71:ab:f0
Source: 20.1.1.2, Rank: 1, Status: Active
State: <Remote-Gateway Local-Adv-Allowed Local-Adv-Done>
IP address: 192.168.10.252
L3 route: 192.168.10.252/32, L3 context: bridge-vrf (irb.0)
Instance: evpn-b
VLAN ID: 123, MAC address: 00:05:86:71:05:f0
Source: irb.0, Rank: 1, Status: Active
State: <Local-MAC-Only Local-Gateway Remote-Adv-Allowed>
IP address: 192.168.10.251
VLAN ID: 123, MAC address: 00:05:86:71:ab:f0
Source: 20.1.1.2, Rank: 1, Status: Active
State: <Remote-Gateway Local-Adv-Allowed Local-Adv-Done>
IP address: 192.168.10.252
L3 route: 192.168.10.252/32, L3 context: bridge-vrf (irb.0)
'''
evpn_obj_list = re.compile(r'Instance:\s+(\S+)(.*?)(?:\S+|\Z)',re.S|re.M).findall(config)
evpn = evpn_obj_list
print(evpn)
Результат, который я получаю из вышеизложенного:
[('evpn-a', '\n\n'), ('evpn-b', '\n\n')]