$re = '/^\/scan\/anything\/se=([\w-.]+)\/se=((?:[\w-.]+)(?=\.html)|[\w-.]+)/m';
$str = '/scan/anything/se=hello-world/se=word.html
/scan/anything/se=hello-world.html/se=word.html
/scan/anything/se=hello-world/se=1.5/
/scan/anything/se=hello-world/se=1.5
/scan/anything/se=temp-2.5/se=1.5.html';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
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 PHP, please visit: http://php.net/manual/en/ref.pcre.php