re = /(?={each\ \$nestedArr}) ({each\ \$\w+} (?: [^{] | {(?!\/?each) | (?1) )* {\/each})/x
str = '<ul>
{each $nestedArr}
<li>{$group}</li>
<ul>
{each $user}
<li>{$name}</li>
{/each}
</ul>
{/each}
</ul>'
# Print the match result
str.match(re) do |match|
puts match.to_s
end
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 Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html