import re
regex = re.compile(r"^<[^'\"\d{vV;<$]+$", flags=re.DOTALL)
test_str = ("<?php\n"
"error_reporting(~E_NOTICE)&\n"
"define(A,a.chr(E_COMPILE_ERROR-E_NOTICE+E_WARNING))&define(B,getopt(A,[])[a])&print_r(array_chunk(\n"
"array_slice(\n"
"array_merge(\n"
"range(E_ERROR,B)\n"
",range(E_WARNING*B,E_ERROR+B)\n"
",range(E_WARNING*B+E_ERROR,(E_WARNING+E_ERROR)*B)\n"
",range(E_PARSE*B,+E_ERROR+(E_WARNING+E_ERROR)*B)\n"
",range(E_PARSE*B+E_ERROR,(E_PARSE+E_ERROR)*B)\n"
",range((E_PARSE+E_WARNING)*B,+E_ERROR+(E_PARSE+E_ERROR)*B)\n"
",range((E_PARSE+E_WARNING)*B+E_ERROR,(E_NOTICE-E_ERROR)*B)\n"
",range(E_NOTICE*B,+E_ERROR+(E_NOTICE-E_ERROR)*B)\n"
",range(E_NOTICE*B+E_ERROR,(E_NOTICE+E_ERROR)*B)\n"
",range((E_NOTICE+E_WARNING)*B,E_ERROR+(E_NOTICE+E_ERROR)*B)\n"
",range((E_NOTICE+E_WARNING)*B+E_ERROR,(E_NOTICE+E_WARNING+E_ERROR)*B)\n"
",range((E_NOTICE+E_PARSE)*B,E_ERROR+(E_NOTICE+E_WARNING+E_ERROR)*B)\n"
",range((E_NOTICE+E_PARSE)*B+E_ERROR,(E_NOTICE+E_PARSE+E_ERROR)*B)\n"
",range((E_CORE_ERROR-E_WARNING)*B,E_ERROR+(E_NOTICE+E_PARSE+E_ERROR)*B)\n"
",range((E_CORE_ERROR-E_WARNING)*B+E_ERROR,(E_CORE_ERROR-E_ERROR)*B)\n"
")\n"
",B-B,B*B\n"
"),B)\n"
")\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