2011-03-25 48 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