Регулярное выражение и исключить определенный текст из группы захватаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Регулярное выражение и исключить определенный текст из группы захвата

Сообщение Anonymous »

У меня есть следующие списки управления доступом от Cisco

Код: Выделить всё

access-list office extended permit tcp host 1.1.1.1 host 2.2.2.2
access-list home extended permit object-group PROTOS4 host 4.4.4.4 host 5.5.5.5

Я пытаюсь написать парсер, и у меня есть следующий код на Python

Код: Выделить всё

acl_general_structure = (
r'access-list\s+(?P
[A-Za-z0-9\-\_]+)\s+extended\s+(?Ppermit|deny)'
r'\s'
r'(?P[a-zA-Z0-9]+|(?:object-group\s[A-Za-z\d]+))'
r'\s'
r'host\s(?P(?:[0-9]{1,3}\.){3}[0-9]{1,3})'
r'\s'
r'host\s(?P(?:[0-9]{1,3}\.){3}[0-9]{1,3})'
)

f_in_name="xx.config"
f_out_name=f_in_name + ".csv"

with open(f_in_name, "r", encoding="utf8") as f:
for line in f.readlines():
result=re.match(acl_general_structure,line)
if result:
print(result.groupdict())

с текущим кодом результат:

Код: Выделить всё

{'policy_name': 'office', 'action': 'permit', 'protocol': 'tcp', 'source': '1.1.1.1', 'destination': '2.2.2.2'}
{'policy_name': 'home', 'action': 'permit', 'protocol': 'object-group PROTOS4', 'source': '4.4.4.4', 'destination': '5.5.5.5'}
Чего я хочу достичь

Код: Выделить всё

{'policy_name': 'office', 'action': 'permit', 'protocol': 'tcp', 'source': '1.1.1.1', 'destination': '2.2.2.2'}
{'policy_name': 'home', 'action': 'permit', 'protocol': 'PROTOS4', 'source': '4.4.4.4', 'destination': '5.5.5.5'}
Это означает, что строка «группа объектов» удалена из группы захвата. Возможно ли это на самом деле, или мне нужно переварить это отдельно через разделение Python во время работы над значением disconary {'proptocol'}? Я знаю, как обрабатывать строки в Python, но хотел бы обработать это на уровне регулярных выражений.

Подробнее здесь: https://stackoverflow.com/questions/772 ... ring-group
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»