在模式的开头用静态字符串进行匹配


preg match all with static string at beginning of pattern

我将在PHP中使用以下字符串进行preg匹配:

{{beginning_of_string|:|optional_param|:|http_link}} 
{{beginning_of_string|:|optional_param|:|text}} 
{{beginning_of_string}}

这三种可能性可以出现在整个字符串中,也可以只出现一次。以下是目前为止我的正则表达式:

preg_match_all('#'{'{beginning_of_string(.+?)'}'}#', $content, $string)
到目前为止,这只匹配字符串的前两次出现,而不是最后一次。这个正则表达式只匹配最后一次出现:
#'{'{beginning_of_string'}'}#

我是相当新的正则表达式,所以我知道它可能是简单的东西。有人有什么想法吗?

+表示"一次或多次重复"。

你需要*为"零或更多的重复":

preg_match_all('#'{'{beginning_of_string(.*?)'}'}#', $content, $string)