我有一个这样的字符串:
这是{{testing}} PHP {{regular expression}}
的{{text}}我使用以下模式来获取包含{{text}},{{testing}},{{regular expression}}
的数组/\{\{.+\}\}/
但是它返回一个只有1个元素的数组:
{{text}} {{testing}} php {{regular expression}}“
还试过这个:
/\{\{(?R)|.+\}\}/
但我得到的结果相同。
这种模式有什么问题?
感谢。
答案 0 :(得分:3)
尝试使用/\{\{.+?\}\}/
,注意?,原始是贪婪的,这意味着它将匹配尽可能多的字符,如果你有。+它意味着它将从第一个{到最后一个} }。
+?
,*?
是+
和*
的非贪婪版本。
答案 1 :(得分:0)
我认为更快的解决方案是正则表达式/\{\{([^}]+)\}\}/
,因为非贪婪的量词会逐字逐句地获得,直到达到右括号,而这个正则表达式在第一次尝试时将所有内容都放到右括号。
修改
另外,我认为OP希望使用匹配的结果,因此在[^}]+
周围添加了匹配的括号。