【问题标题】:How to modify this REGEX to allow nested Bracket [duplicate]如何修改此正则表达式以允许嵌套括号 [重复]
【发布时间】:2014-09-12 09:22:51
【问题描述】:

我的正则表达式现在允许自旋语法 {spin1|spin2}

  $customContent = preg_replace('/(\{)(.*?)(})/', '{#'.$index.'#}', $customContent, 1);

我想允许无限嵌套括号 { {spin1|spin2} {blabla1|blabla2} }

你能帮我解决这个正则表达式吗?

我尝试了以下解决方案。没有任何效果。

/{([^{}]*)}/

/(?<={)[^}]*(?=})/

/(\{(?:\{.*\}|[^\{])*\})/m

/\{(((?>[^\{\}]+)|(?R))*)\}/x

/\{.*?\}/i

【问题讨论】:

  • Hamza thx 你,但我不是专家事件,我了解一点,我会读它,但不确定我会做它
  • 递归模式是正则表达式中的高级技术之一。如果您仍然是初学者,您可能需要练习并阅读更多关于正则表达式和一般常见模式的信息。如果您已经对正则表达式有点熟悉,您可以阅读this article
  • @user3216977 我还是不明白你的问题。看看这个regex101.com/r/bR2iB6/4

标签: regex


【解决方案1】:

无限嵌套括号,无限深度,不为空内容:(JS语法)

/(\s*\{[^\{\}]+\}\s*)+/g

DEMO

-- 编辑--

这是你的意思吗?

/[^{}]*{\s*([^{}]+)?}?\s*[^{}]*/g

DEMO

【讨论】:

猜你喜欢
  • 2013-01-20
  • 1970-01-01
  • 2020-02-14
  • 2017-09-12
  • 1970-01-01
  • 2014-10-19
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
相关资源
最近更新 更多