$re = '/<body(.[^>{}]*(?:{+[^}]*}+[^>{}]*)*)>/s';
$str = '<other tag><body class="template-{{ template | replace: \'.\', \' \' | truncatewords:
1, \'\' }}{% if promo %}has-promo{% endif %} {% if products.size > 1
%}has-related-products{% endif %} {% if settings.product-hover ==
\'quick-shop\' %}has-quick-shop{% endif %} loading" ></other tag>';
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