# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?:(^[^:\r\n]+):?[\r\n]+|\G(?!^))\r?\n[^:\r\n]+ : ([^\r\n]+(?:\r?\n(?!.* : )[ \t]+[^\r\n]+)*)"
test_str = ("Windows IP Configuration\n\n"
" Host Name . . . . . . . . . . . . : abcmyhost\n"
" Primary Dns Suffix . . . . . . . : parker.industries\n"
" Node Type . . . . . . . . . . . . : Hybrid-GLS\n"
" IP Routing Enabled. . . . . . . . : YES\n"
" WINS Proxy Enabled. . . . . . . . : YES\n"
" DNS Suffix Search List. . . . . . : parker1.industries\n"
" parker2.industries\n"
" parker3.industries\n"
" parker4.industries\n"
" parker5.industries\n"
" parker6.industries\n"
" parker7.industries\n"
" parker8.industries\n"
" parker9.industries\n"
" parker10.industries\n\n"
"Ethernet adapter Ethernet 5:\n\n"
" Connection-specific DNS Suffix . : parker.industries\n"
" Description . . . . . . . . . . . : Ready 2\n"
" Physical Address. . . . . . . . . : 60-11-11-31-09-XY\n"
" DHCP Enabled. . . . . . . . . . . : NO\n"
" Autoconfiguration Enabled . . . . : Yes\n"
" Link-local IPv6 Address . . . . . : AB80::11FG:1KI:LK9F:12N2%19(Preferred) \n"
" IPv4 Address. . . . . . . . . . . : 111.222.333.444(Preferred) \n"
" Subnet Mask . . . . . . . . . . . : 255.255.255.0\n"
" Lease Obtained. . . . . . . . . . : Monday, November 11, 2019 6:23:03 AM\n"
" Lease Expires . . . . . . . . . . : Wednesday, November 13, 2019 6:51:30 AM\n"
" Default Gateway . . . . . . . . . : 111.11.131.1\n"
" DHCP Server . . . . . . . . . . . : 111.22.144.199\n"
" DHCPv6 IAID . . . . . . . . . . . : 87244642462\n"
" DHCPv6 Client DUID. . . . . . . . : 00-01-02-03-04-05-06-07-08-09-10-11-E9-G7\n"
" DNS Servers . . . . . . . . . . . : 111.22.111.254 \n"
" 111.22.112.254\n"
" 111.33.113.254\n"
" 111.33.114.254\n"
" NetBIOS over Tcpip. . . . . . . . : Enabled")
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