我需要一个正则表达式,它可以在可能包含匹配圆括号的字符串中找到任何不匹配的大括号(打开或关闭)。正则表达式找到不匹配的圆括号
这里的问题存在于stackoverflow,但我还没有找到一个基于正则表达式的解决方案。
我想出了一个正则表达式,发现无与伦比的开放大括号\((?![^)]+\))
使用负向预测,但我似乎无法弄清楚无与伦比的大括号所需的相反之处。
编辑:上述正则表达式来查找不匹配开放括号按预期不起作用。例如。它会怀念在多个打开的括号后跟一个右括号的情况下(见评论)
这里是我一直在尝试与Rubular我的测试字符串:
one) ((two) (three) four) (five)))
注意该字符串可以包含任何类型的字符,包括引号,短划线等。
这是因为在一般情况下不存在基于正则表达式的解决方案。这与你[无法用正则表达式解析XML](http://stackoverflow.com/a/1732454/13)(同样在一般情况下)是一样的原因。 – 2012-02-15 20:09:14
它真的必须是正则表达式吗?为什么不用'string.each_char {| c | ''? – 2012-02-15 20:10:18
没有严格的正则表达式语言可以..但像PCRE常见的扩展正则表达式可能能够。请参阅http://stackoverflow.com/questions/562606/regex-for-checking-if-a-string-has-mismatched-parentheses – Kaganar 2012-02-15 20:15:14