2011-03-25 47 views
2

我已经阅读了很多文章,在Ruby中使用Regexp匹配嵌套大括号。然而,我无法适应我的情况,而且我被卡住了。 Ruby 1.9书使用以下内容来匹配一组嵌套的大括号红宝石中的大括号与前面的字符匹配

/\A(?<brace_expression>{([^{}]|\g<brace_expression>)*})\Z/x 

我想通过三种方式来改变它。 1.我想用括号代替大括号,2.我想要一个前面的字符(比如一个散列符号),以及3.我想匹配字符串中的任何地方,而不仅仅是开始和结束。这是我到目前为止。

/(#(?<brace_expression>\(([^\(\)]|\g<brace_expression>)*\)))/x 

任何帮助获得正确的表达将不胜感激。

回答

2

使用正则表达式修饰符x可在正则表达式中启用注释。因此,正则表达式中的#被解释为注释字符,而正则表达式的其余部分将被忽略。您需要转义#或删除x修饰符。

btw:没有必要转义[]内的括号。

+0

确实,这工作得很好。谢谢。 – 2011-03-25 03:47:32