$re = '/(<svg .*?)(width=".*?").*?(?:height=".*?")(.*?>)/m';
$str = '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="24" xml:space="preserve">
<path d="M13 5h-1V4h1M8 5H7V4h1m5.5-1.8L14.8.9c.2-.2.2-.5 0-.7-.2-.2-.5-.2-.7 0l-1.5 1.5c-.7-.5-1.7-.7-2.6-.7-1 0-1.9.2-2.7.6L5.8.1c-.1-.1-.5-.1-.6 0-.2.2-.2.5 0 .7l1.3 1.3C5 3.3 4 5 4 7h12c0-2-1-3.7-2.5-4.8m5 5.8c-.8 0-1.5.7-1.5 1.5v7c0 .8.7 1.5 1.5 1.5s1.5-.7 1.5-1.5v-7c0-.8-.7-1.5-1.5-1.5m-17 0C.7 8 0 8.7 0 9.5v7c0 .8.7 1.5 1.5 1.5S3 17.3 3 16.5v-7C3 8.7 2.3 8 1.5 8M4 18c0 .6.4 1 1 1h1v3.5c0 .8.7 1.5 1.5 1.5S9 23.3 9 22.5V19h2v3.5c0 .8.7 1.5 1.5 1.5s1.5-.7 1.5-1.5V19h1c.6 0 1-.4 1-1V8H4v10z"/>
</svg>
';
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