Ограничить количество строк поиска
Есть такая регулярка, которая находит полисер, проблема в том, что она находит полисер в другом unit. Вот в примере она найдет 100m из следующего unit. А если его нет, то нужно что бы ничего не находила. Нужно как то ограничить количество строк поиска между unit и полисером. например максимум искать в 14-ти строках. Чтоб не лезла в другой unit. Подскажите пожалуйста как это сделать?
xx = re.findall(r'ae13 .*?unit 35.*?output.*?lim(.+?);', ss, flags=re.S)
ae13 {
apply-groups arp-police;
description "<< (EX8216) >>";
flexible-vlan-tagging;
mtu 9100;
encapsulation flexible-ethernet-services;
aggregated-ether-options {
lacp {
active;
}
}
unit 35 {
apply-groups-except arp-police;
description "## test L2VPN ##";
encapsulation vlan-ccc;
vlan-id 35;
family ccc {
filter {
input l2vpn_BP;
}
policer {
input lim30m;
}
}
}
unit 77 {
apply-groups-except arp-police;
encapsulation vlan-ccc;
vlan-id 77;
input-vlan-map pop;
output-vlan-map push;
family ccc {
filter {
input l2vpn-cos-normal;
}
policer {
input lim100m;
output lim100m;
}
}
}```
Ответы (1 шт):
Автор решения: alex-cherenkov
→ Ссылка
xxx1 = re.findall(r''+r+' .*?unit '+u+' .{500}', ss, flags=re.S)
xxx = re.findall(r''+r+' .*?unit '+u+'.*?output.*?lim(.+?);', xxx1[0], flags=re.S)
так выкрутился. в первом проходе цепляем +500 символов и далее еще раз. вот и получается ограничение.