import re
regex = re.compile((r"(?'gPatSyslogPRI'<\d+>)\n"
r"(?'gPatMesgBody'.*)\n"
r"(?'gPatMesgBodyMin'.*?)\n"
r"(?'gPatSyslogNGHeader'\w{3}\s+\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}\s\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\n"
r"(?'gPatMon'Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|\d{1,2})\n"
r"(?'gPatMonNum'\d{1,2})\n"
r"(?'gPatDay'\d{1,2})\n"
r"(?'gPatTime'\d{1,2}:\d{1,2}:\d{1,2})\n"
r"(?'gPatYear'\d{2,4})\n"
r"(?'gPatMSec'\d{1,3})\n"
r"(?'gPatTimeMSec'\d{1,2}:\d{1,2}:\d{1,2}\.\d{1,3})\n"
r"(?'gPatTimeZone'Z|UTC|[+-]\d{1,2}:?\d{2})\n"
r"(?'gPatWeekday'Mon|Tue|Wed|Thu|Fri|Sat|Sun)\n"
r"(?'gPatIpV4Dot'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\n"
r"(?'gPatIpAddr'[0-9A-Fa-f]{0,4}(?::[0-9A-Fa-f]{0,4}){1,5}:(?:\d{1,3}(?:\.\d{1,3}){3}|[0-9A-Fa-f]{0,4}(?::[0-9A-Fa-f]{0,4})?)|\d{1,3}(?:\.\d{1,3}){3})\n"
r"(?'gPatIpPort'\d{1,5})\n"
r"(?'gPatProto'ftp|icmp|tcp|udp|http|ip|smb|smtp|snmp|others|FTP|ICMP|UDP|TCP|HTTP|IP|SMB|SMTP|SNMP|OTHERS)\n"
r"(?'gPatFqdn'\w+[.\w+]+)\n"
r"(?'gPatWord'\w+)\n"
r"(?'gPatStr'[^\s]*)\n"
r"(?'gPatHostName'[\w.-]+)\n"
r"(?'gPatStrComma'[^,]*)\n"
r"(?'gPatStrLeftParen'[^\(]*)\n"
r"(?'gPatStrRightSB'[^\]]*)\n"
r"(?'gPatInt'\d+)\n"
r"(?'gPatSpace'\s+)\n"
r"(?'gPatStrEndColon'[^:]*)\n"
r"(?'gPatStrSQ'[^']*)\n"
r"(?'gPatStrDQ'[^']*)\n"
r"(?'gPatSentence'\w[\s+\w]*)"), flags=re.MULTILINE)
test_str = ""
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