import re
regex = re.compile(r"""
# regex with example test case: <https://regex101.com/r/Xf0Xah/4>
# IP, ex: 1.2.3.4
(?P<IP>
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
)
# ignore the smallest possible match between them
(:.*?)
# Time in Milliseconds. match requires suffix, but drop only return the integer
(?:
(?P<Time>
\d+
)
ms
)
""", flags=re.VERBOSE)
test_str = ("\n"
"Pinging google.com [142.250.191.142] with 32 bytes of data:\n"
"Reply from 142.250.191.142: bytes=32 time=24ms TTL=113\n"
"Reply from 142.250.191.142: bytes=32 time=20ms TTL=113\n"
"Reply from 142.250.191.142: bytes=32 time=19ms TTL=113\n\n"
"Reply from 142.250.191.142: bytes=32 time=21ms TTL=113\n\n"
"Ping statistics for 142.250.191.142:\n"
" Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),\n"
"Approximate round trip times in milli-seconds:\n"
" Minimum = 19ms, Maximum = 24ms, Average = 21ms")
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