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

时间:2015-01-12 13:08:19

标签: ruby regex

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

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

2 个答案:

答案 0 :(得分:3)

以下正则表达式取自 Programming Ruby

re = /
  \A
    (?<brace_expression>
      {
        (
          [^{}] # anything other than braces
        | # ...or...
          \g<brace_expression> # a nested brace expression
        )*
      }
    )
  \Z
/x

\g<brace_expression>这里是递归使用的。

答案 1 :(得分:2)

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

Can regular expressions be used to match nested patterns?”详细介绍了这一主题。

编辑:原来Ruby的正则表达式引擎支持这一点。见余浩的回答。