如何在ruby中验证平衡括号的正则表达式?

如何在ruby中验证平衡括号的正则表达式?,ruby,regex,Ruby,Regex,请帮助我验证字符串的平衡括号。 下面是我的测试字符串 The industry [standard] for (transcribing) an audio file takes one hour for every ) 5 minutes of audio. 不幸的是,使用正则表达式无法确定这一点。这是因为正则表达式识别正则语言,而嵌套模式(这基本上就是您在这里要求的)不是正则语言的一部分 ”“关于这个问题,他说得再详细一点 编辑:结果表明Ruby的正则表达式引擎确实支持这一点。参见于浩的答案

请帮助我验证字符串的平衡括号。 下面是我的测试字符串

The industry [standard] for (transcribing) an audio file takes one hour for every ) 5 minutes of audio.

不幸的是,使用正则表达式无法确定这一点。这是因为正则表达式识别正则语言,而嵌套模式(这基本上就是您在这里要求的)不是正则语言的一部分

”“关于这个问题,他说得再详细一点


编辑:结果表明Ruby的正则表达式引擎确实支持这一点。参见于浩的答案。

以下正则表达式取自Ruby编程:

re=/
\A
(?
{
(
除了大括号以外的任何东西
|#……或。。。
\g#一个嵌套的大括号表达式
)*
}
)
\Z
/x

\g
这里是递归使用的。

这对于普通正则表达式是正确的,但是不要忘记Ruby的正则表达式引擎支持许多扩展。很好,我没有考虑到这一点(实际上是从你的帖子中了解到的:))欢迎使用堆栈溢出。不幸的是,堆栈溢出不是一种代码编写服务。相反,我们帮助您调试您编写的代码。请向我们展示您尝试过的代码,我们将很乐意帮助您修复它。实际上,您的问题没有满足基本要求,并且是离题的,所以请添加代码。
re = /
  \A
    (?<brace_expression>
      {
        (
          [^{}] # anything other than braces
        | # ...or...
          \g<brace_expression> # a nested brace expression
        )*
      }
    )
  \Z
/x