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就没有错>}}
最后实际上是一个有效的场景,因为在{{..}
内部可以有任意数量的{
,{{{{
,}}
等。无论如何,(}之前)
修复了这个问题。