正则表达式匹配双花括号嵌套

时间:2016-02-19 12:59:26

标签: php regex double-brace-initialize

是正则表达式匹配而/ 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

我只能想到这个Reg

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

Regex101

1 个答案:

答案 0 :(得分:2)

试试这个:

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

Online Demo

另外单独获取(正如您在问题和评论中提到的那样),试试这个:

/\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}}

Online Demo