import re
regex = re.compile(r"^\[(?<log_time>[^\]]*)\] (?<log_level>[^ ]*) \[(?<log_id>[^ ]*)\] (?<log_req>[^ ]*) (?<log_stash>[^ ]*) (?:[^ ]* \")(?<log_ip>[^ ]*)\"\, (?:[^ ]* \")(?<log_user>[^ ]*)\"\, (?:[^ ]* \")(?<log_method>[^ ]*) (?<log_url>[^ ]*) (?<log_httpver>[^ ]*)\, (?:[^ ]* \")(?<log_response_status>[^ ]*)\"\, (?:[^ ]* \")(?<log_response_bytes>[^ ]*)\"\, (?:[^ ]* \")(?<log_referer>[^ ]*)\"\, (?:[^ ]* )\"(?<log_user_agent>.*?[^\\])\"\, \"(.*?[^\\])\"\: \"(?<log_device>.*?[^\\])\"\, \"(.*?[^\\])\"\: \"(?<log_locale>.*?[^\\])\"\}", flags=re.MULTILINE)
test_str = ("[2022-10-18 07:57:29,897 +0000] INFO [qtp698784309-26] RequestLog: - {\"address\": \"127.0.0.1\", \"user\": \"-\", \"request\": \"GET /op/123 HTTP/1.1\", \"response_status\": \"200\", \"response_bytes\": \"321\", \"referer\": \"-\", \"user_agent\": \"node-fetch/1.0 (+https://github.com/bitinn/node-fetch)\", \"device_type\": \"-\", \"locale\": \"-\"}\n")
match = regex.search(test_str)
if match:
print(f"Match 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