import re
regex = re.compile(r"(?:(?:^edit\ \"(.+)\"$\n)(?:^set\ uuid\ ([a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12})$\n)(?:(?:^set\ comment\ )((?:(?!^set\ )(?:.*$\n))+)(?=^set\ ))?(?:^set\ service\ (\".+\")$\n)?(?:^set\ extip\ ((?:(?:\d{1,3}\.){3}(?:\d{1,3}))(?:\-(?:\d{1,3}\.){3}(?:\d{1,3}))?)$\n)(?:^set\ extintf\ \"(.+)\"$\n)(?:^(set\ portforward)\ (enable)$\n)?(?:^(set\ color)\ (\d{1,2})$\n)?(?:^set\ mappedip\ \"((?:(?:\d{1,3}\.){3}(?:\d{1,3}))(?:\-(?:\d{1,3}\.){3}(?:\d{1,3}))?)\"$\n)(?:^(set\ protocol)\ (.+)$\n)?(?:^(set\ extport)\ (\d{1,5}(?:\-\d{1,5})?)$\n)?(?:^(set\ mappedport)\ (\d{1,5}(?:\-\d{1,5})?)$\n)?(?:^next$\n(?:^$\n)?))", flags=re.MULTILINE)
test_str = ("edit \"VIP [DNS сервер site.com]\"\n"
"set uuid abcdef01-2345-6789-abcd-ef0123456789\n"
"set comment \"Публикация IP-адреса для проекта \n"
"\\\"TEST\\\" в ДЦ \\\"Облако\\\"\"\n"
"set service \"HTTP Webserver\"\n"
"set extip 100.200.254.20\n"
"set extintf \"DMZ [VLAN 100]\"\n"
"set portforward enable\n"
"set color 3\n"
"set mappedip \"10.100.200.5\"\n"
"set protocol udp\n"
"set extport 53\n"
"set mappedport 2000-65535\n"
"next\n\n"
"edit \"VIP [NTP сервер site.com]\"\n"
"set uuid abcdef01-2345-6789-abcd-ef0123456789\n"
"set comment \"Публикация IP-адреса для проекта \n"
"\\\"TEST\\\" в ДЦ \\\"Облако\\\"\"\n"
"set service \"NTP TCP Server\" \"NTP UDP Server\"\n"
"set extip 100.200.254.20-100.200.254.21\n"
"set extintf \"DMZ [VLAN 100]\"\n"
"set portforward enable\n"
"set color 3\n"
"set mappedip \"10.100.200.5-10.100.200.6\"\n"
"set protocol udp\n"
"set extport 123\n"
"set mappedport 1000-1999\n"
"next\n")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html