PHP preg_匹配双大括号内的三大括号

PHP preg_匹配双大括号内的三大括号,php,regex,Php,Regex,我试图编写一个正则表达式来查找双大括号之间的字符串,但如果找到三个大括号,它就会停止 有人能帮我吗 {{前缀这是 一个{{{example}}} 停不下来 关于示例词。}} {{另一个前缀} 双背带和我 必须同时找到}} 正则表达式: '/\{\{prefix(.*)?\}\}/sU' 编辑: 对不起,我忘了说我需要断线 谢谢 这是一个简单的问题,即确保双括号分隔符{{-} 然后将其注入递归 ( 格式化代码: (?<! { ) # Not a brace

我试图编写一个正则表达式来查找双大括号之间的字符串,但如果找到三个大括号,它就会停止

有人能帮我吗

{{前缀这是
一个{{{example}}}
停不下来
关于示例词。}}
{{另一个前缀}
双背带和我
必须同时找到}}

正则表达式:

'/\{\{prefix(.*)?\}\}/sU'

编辑:

对不起,我忘了说我需要断线


谢谢

这是一个简单的问题,即确保双括号分隔符
{{
-
}

然后将其注入递归

格式化代码:

 (?<! { )               # Not a brace behind

 {                      # Open Brace ( 1st of double )
 (?! {{ )               # Tripple open not allowed
 (                      # (1 start), recursion function
      {                      # Open Brace ( 2nd of double )
      (?:
           [^{}]++                # Not braces, possesive
        |                       # or, 
           (?1)                   # Recurse a single open/close brace pair
      )*
      }                      # Close Brace ( closure)
 )                      # (1 end), recursion
 }                      # Close Brace 

(?如果有人在寻找像我需要的东西,Wiktor会给我们一条路


'~(?您可以使用一个正则表达式,该正则表达式将在之前匹配
{{
而不匹配
{
,然后匹配
前缀
,然后匹配除
{
}
之外的任何字符量,或者单个
{
/
}
或3个或更多
{/code>{/code>或
}s,最多一个
}}
子字符串后面不跟
}

'~(?<!{){{prefix(?:[^{}]|(?<!})}(?:}{2,})?|(?<!{){(?:{{2,})?)*(?<!})}}(?!})~'

'~(?你使用的是
/U
,这会使量词变懒。这样的字符串在更大的文本中是否多次出现?或者它是一个独立的字符串?不,这就是
/s
所做的,它使点匹配一个换行符。是的,我使用@WiktorStribiżew。我不能得到第一个{{和最后一个},因为还有其他地方
'~(?它完成了第一步,但我无法获取“另一个前缀”“谢谢你!”@ TuaGuyBykimimatoto-<代码>如果其他人正在寻找我需要的东西,Wikor给我们的方式 LOL RoFL…我可以自己发布我的解决方案。请不要抄袭别人的解决方案。你甚至不需要<代码> S/<代码>这里。请考虑接受我的答案,因为我的解决方案为Y工作。ou并删除此“答案”。请删除此“答案”以完成问题接受我的回答,因为你说它对你有用。这样,你将获得更多的声誉,而不是失去它。这个解决方案实际上是错误的匹配,当有三个结尾时,它也捕获了一个匹配。
}
,而不是只有两个。
@PushpeshKumarRajwanshi如果.three
就没有错>}}
最后实际上是一个有效的场景,因为在
{{..}
内部可以有任意数量的
{
{{{{
}}
等。无论如何,
}之前)
修复了这个问题。