import re
regex = re.compile(r"^(get|post|head|options|put|delete|trace|connect) [\x09-\x0d -~]*? http\/(0\.9|1\.0|1\.1)|^http\/(0\.9|1\.0|1\.1) [1-5][0-9][0-9]", flags=re.DOTALL | re.IGNORECASE)
test_str = ("HTTP/1.1 206 Partial Content\n"
"Server: nginx\n"
"Date: Wed, 11 Nov 2015 03:56:37 GMT\n"
"Content-Type: application/octet-stream\n"
"Content-Length: 356602\n"
"Last-Modified: Sat, 09 May 2015 01:02:03 GMT\n"
"Connection: keep-alive\n"
"Cache-Control: no-store\n"
"Pragma: no-cache\n"
"Access-Control-Allow-Origin: *\n"
"Access-Control-Expose-Headers: X-TCP-Info,X-Session-Info\n"
"X-TCP-Info: h0=1468775468;h1=1393591241;h2=2806702307;h3=4238532199;h4=1088413687;\n"
"X-Session-Info: addr=14.203.114.166;port=64848;argp=6.r_LuFhNjxnyyv1lFwH73LPg5P97q98pNwisQ1a9GcfM\n"
"Content-Range: bytes 221217390-221573991/345312900\n\n"
"...{moof....mfhd...........ctraf....tfhd... ............tfdt.......\n"
".tj`...Asaiz........0....................................")
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