2009-10-11 67 views
0

我試圖擴展PHP Markdown以允許圍繞文本的某些部分使用{{和}}(它們將成爲搜索關鍵字,就像標籤一樣)。如何用正則表達式找到'{{**** *** **}}'的所有匹配項?

我有一個還挺的工作原理是基本的正則表達式:

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

除非它不工作時,有2個關鍵字在同一個句子:

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

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

如何修改正則表達式,使其適用於兩種情況?

回答

2

量詞是貪婪的。這意味着前面的表達式被擴展到可能重複的最大值。嘗試使用非貪婪量詞,而不是通過附加一個?的量詞:

/\{\{(.*?)\}\}/ 
+0

謝謝,它的工作。我會接受你的回答,因爲它只增加了1個字符(我很懶;))並且你給出了額外的解釋。 – 2009-10-11 18:29:22

0
preg_match_all("/{{([^}]*)}}/", $description, $nomsTags);