我想匹配以下内容: 在 "{{ loop (something) }}" 与第一个 {{ /loop (that something) }} 之间的所有内容。
文本示例:
{{ LOOP data }}
<span> Member key = {{.key}} </span>
<span> Member value = {{.}} </span>
<span> Member member = {{name}} </span>
<span> Iteration number = {{.counter}} </span>
{{ /LOOP data }}
以下是不起作用的正则表达式:
/\{\{\s+loop\s+(.+?)\s+\}\}([\w\W]+?)\{\{\s+\/loop\s$1\s+\}\}/i
如您所见,我正在尝试使用"$1"重复使用第一个匹配组:我错过了什么?
以下是PHP代码:
$text = '
{{ LOOP data }}
<span> Member key = {{.key}} </span>
<span> Member value = {{.}} </span>
<span> Member member = {{name}} </span>
<span> Iteration number = {{.counter}} </span>
{{ /LOOP data }}
';
preg_match('/\{\{\s+loop\s+(.+?)\s+\}\}([\w\W]+?)\{\{\s+\/loop\s\1\s+\}\}/i', $text, $match);
print_r($match);
die;