import re
regex = re.compile(r"(?P<browser>Android)\s(?P<major_version>\d+)\.(?P<minor_version>\d+\.?\d?);(?P<lang>\spt-br){0,1};{0,1}(?P<device>[ \w\-?]+)\s")
test_str = ("20-03-2017 17:26:39\n"
"GET /ourapps.php HTTP/1.1\n\n"
"HTTP headers:\n"
"Accept-Language: pt-BR,en-US;q=0.8\n"
"Accept-Encoding: gzip, deflate\n"
"User-Agent: Mozilla/5.0 (Linux; Android 5.1; 4017F Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.121 Mobile Safari/537.36\n"
"Accept: application/json, text/plain, */*\n"
"Connection: close\n\n"
"20-03-2017 20:17:08\n"
"GET /ourapps.php HTTP/1.1\n\n"
"HTTP headers:\n"
"Accept-Charset: utf-8, iso-8859-1, utf-16, *;q=0.7\n"
"Accept-Language: pt-BR, en-US\n"
"Accept-Encoding: gzip,deflate\n"
"X-Wap-Profile: http://gsm.lge.com/html/gsm/E467f-M3-D1.xml\n"
"User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; pt-br; LG-E467f Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30\n"
"Accept: application/json, text/plain, */*\n"
"Connection: close\n\n"
"20-03-2017 21:09:36\n"
"GET /ourapps.php HTTP/1.1\n\n"
"HTTP headers:\n"
"Accept-Language: pt-BR,en-US;q=0.8\n"
"Accept-Encoding: gzip,deflate\n"
"User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; SM-G355M Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36\n"
"Accept: application/json, text/plain, */*\n"
"Connection: close\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