Вложенные в регулярные выражения двойные фигурные скобки

будет ли регулярное совпадение, пока двойные фигурные скобки / loop содержат двойные фигурные скобки?

<?php
$str = '<html lang="{{var doc-lang}}">
<head>
<title>{{var doc-title}}</div>
</head>
<body>
<div class="container">
<div class="row" {{while products}}>
{{var name}}
{{var sku}}
{{var barcode}}
</div {{while end}}>
</div>
</body>
</html>';

Можем ли мы получить

<div class class="row"', [products], {{var name}}, {{ var sku}} and {{var barcode}}

от $str?

Я могу только думать об этом Рег

\<((.*)\{\{while\s+(.*)\}\}(.*)\{\{while\s+end\}\})\>

Regex101

0

Решение

Попробуй это:

/\s*(.*\{\{while\s+.*(?:\r?\n.*)+\{\{while\s+end.*)/

Демо онлайн


Также, чтобы получить их отдельно (как вы упомянули в вопросе и комментарии), Попробуй это:

/\s*(?:(.*)\s+\{\{while\s+(.*)\}\}.*\r?\n\s*(.*)\r?\n\s*(.*)\r?\n\s*(.*)\r?\n.*)/

И вы можете получить то, что вам нужно, как это:

'$1', [$2], $3, $4 and $5

Выход:

'<div class class="row"', [products], {{var name}}, {{ var sku}} and {{var barcode}}

Демо онлайн

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]