# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"^config d(hcp|ns) ip(v4)? (<[^>]*>|(?:\d+\.){3}\d+)( port| timeout|\s*$)( <[^>]*>\s*$| \d+\s*$|\s*$)|config (router|interface) (id|bgp|name) (<[^>]*>\s*$|<[^>]*> id <[^>]*>\s*$|\d+\s*$|[a-z]+ id \d+\s*$|\s*$)"
test_str = ("config dhcp ip <dhcp-ipaddress> port <dhcp-port-number>\n"
"config dhcp ip <dhcp-ipaddress> timeout <time-out-value>\n"
"config dhcp ipv4 <dhcp-ipaddress>\n"
"config dns ip <dns-ipaddress> port <dns-port-number>\n"
"config dns ip <dns-ipaddress> timeout <time-out-value>\n"
"config router bgp <bgp-number>\n"
"config interface id <interface-id> \n"
"config interface name <interface-name> id <interface-id>\n\n"
"config dhcp ip 1.1.1.1 port 8080\n"
"config dhcp ip 1.1.1.2 timeout 120\n"
"config dhcp ip 1.1.1.1 timeout 120\n"
"config dhcp ip 1.1.1.2 port 8080\n"
"config dhcp ipv4 1.1.1.3\n"
"config interface id 12 \n"
"config interface name abc id 12\n"
"config interface id 13 \n"
"config interface name xyz id 13\n\n"
"config dhcp ip 1.1.1.1 port 8080\n"
"config dhcp ip 1.1.1.1 timeout 120\n"
"config dhcp ip 1.1.1.2 timeout 120\n"
"config dhcp ip 1.1.1.2 port 8080\n"
"config dhcp ipv4 1.1.1.3\n"
"config interface id 12 \n"
"config interface name abc id 12\n"
"config interface id 13 \n"
"config interface name xyz id 13")
matches = re.finditer(regex, test_str, re.MULTILINE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
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