Try the following:
/\s*(.*\{\{while\s+.*(?:\r?\n.*)+\{\{while\s+end.*)/
Also, to get them separately (as you mentioned in the question and comments), try the following:
/\s*(?:(.*)\s+\{\{while\s+(.*)\}\}.*\r?\n\s*(.*)\r?\n\s*(.*)\r?\n\s*(.*)\r?\n.*)/
And you can get what you need:
'$1', [$2], $3, $4 and $5
Output:
'<div class class="row"', [products], {{var name}}, {{ var sku}} and {{var barcode}}
source share