在正则表达式中重复使用匹配的组

3

我想匹配以下内容: 在 "{{ 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;
1个回答

7

抓住了!谢谢@DaveRandom,但是在你发表评论之前我已经纠正了它。当时我在想Perl而不是PHP。 - Mark Reed
很酷,这可能就是答案了 :-) - DaveRandom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接