$re = '/RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule .* https://www.%1%{REQUEST_URI} [L,R=301]
<IfModule mod_expires.c>
ExpiresDefault "access plus 1 year"
</IfModule>
<IfModule mod_headers.c>
Header unset Expires
<FilesMatch "\.(ico)$">
Header set Cache-Control "max-age=31536000, public"
Header merge Cache-Control immutable
</FilesMatch>
<FilesMatch "\.(html)$">
Header set Cache-Control "max-age=180, public"
</FilesMatch>
</IfModule>/msi';
$str = 'RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\\.
RewriteCond %{HTTP_HOST} ^(?:www\\.)?(.+)$
RewriteRule .* https://www.%1%{REQUEST_URI} [L,R=301]
<IfModule mod_expires.c>
ExpiresDefault "access plus 1 year"
</IfModule>
<IfModule mod_headers.c>
Header unset Expires
<FilesMatch "\\.(ico)$">
Header set Cache-Control "max-age=31536000, public"
Header merge Cache-Control immutable
</FilesMatch>
<FilesMatch "\\.(html)$">
Header set Cache-Control "max-age=180, public"
</FilesMatch>
</IfModule>';
preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 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