2015-01-12 35 views
-1

请帮我验证字符串的平衡括号。 我的测试字符串在下面。如何验证红宝石中的平衡括号的正则表达式?

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

欢迎来到Stack Overflow。不幸的是,堆栈溢出不是一个代码写入服务。相反,我们会帮助您调试您编写的代码。请向我们展示您尝试过的代码,我们很乐意帮助您解决问题。因为你的问题没有达到基本要求,而且是无关紧要的,所以请添加该代码。 –

回答

2

不幸的是,这是不可能的,以确定使用正则表达式。这是因为正则表达式能够识别常规语言,而嵌套模式(实质上就是您要求的)不是普通语言的一部分。

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

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

+0

这对于常见的正则表达式来说是正确的,但不要忘记Ruby的正则表达式引擎支持许多扩展。 –

+1

好的,我没有考虑到这一点(实际上从你的帖子中学到了这一点:)) – joost

3

下面的正则表达式是从编程红宝石采取:

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

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