import re
regex = re.compile(r"# Time:\s(?<timestamp>.*)\n#.*Id:\s(?<id>.*)\n#\sQuery_time:\s(?<duration>[\d.]*)\s.*time:\s(?<lock_time>[\d.]*)\s.*_sent:\s(?<returned>\d*)\s.*_examined:\s(?<searched>\d*)\n(?<sql>[\s\S]*)", flags=re.MULTILINE)
test_str = (" \n"
"# Time: 210607 16:27:16\n"
"# User@Host: doctime_db_usr[doctime_db_usr] @ [10.2.0.79] Id: 13021\n"
"# Query_time: 20.504504 Lock_time: 0.000233 Rows_sent: 52 Rows_examined: 13827347\n"
"SET timestamp=1623083236;\n"
"SELECT\n"
"substring( substring_index( uri, '/', -1 ) , 1, LENGTH(substring_index( uri, '/', -1 )) - 38 ) AS uri,\n"
"namespace,\n"
"method,\n"
"count(*) AS hits\n"
"FROM\n"
"user_hits\n"
"WHERE\n"
"namespace = 'hospitals' AND\n"
"controller = 'queue' AND\n"
"method = 'file'\n"
"GROUP BY\n"
"substring( substring_index( uri, '/', -1 ) , 1, LENGTH(substring_index( uri, '/', -1 )) - 38 )\n"
"UNION\n"
"SELECT\n"
"uri,\n"
"namespace,\n"
"method,\n"
"count(*) AS hits\n"
"FROM\n"
"user_hits\n"
"WHERE\n"
"uri LIKE '%export%'\n"
"GROUP BY\n"
"method\n"
"ORDER BY hits DESC;\n")
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