0

我正在尝试扩展 PHP Markdown 以允许在文本的某些部分周围使用 {{ 和 }}(它们将成为搜索关键字,如标签)。

我有这个有点工作的基本正则表达式:

preg_match_all("/\{\{(.*)\}\}/", $description, $nomsTags);

除非在同一个句子中有 2 个关键字时它不起作用:

This {{is}} just an {{example}}.

它返回 ' {{is}} just an {{example}}' 而不是 ' {{is}}' 和 ' {{example}}'。

如何修改正则表达式使其在两种情况下都有效?

4

3 回答 3

3

代替 。你可以使用[^}].

于 2009-10-11T18:20:46.887 回答
2

量词是贪婪的。这意味着前面的表达式被扩展为最大可能的重复。通过将 a 附加到量词来尝试使用非贪婪?量词:

/\{\{(.*?)\}\}/
于 2009-10-11T18:20:06.713 回答
0
preg_match_all("/{{([^}]*)}}/", $description, $nomsTags);
于 2009-10-11T18:31:05.973 回答