3
我在鎬Ruby文中發現了一個正則表達式,用於尋找平衡的大括號表達式,我試圖在它上面構建一個匹配平衡大括號/括號/ parens的正則表達式。紅寶石中的平衡大括號/括號/ parens正則表達式
原:
re =/
\A
(?<brace_expression>
{
(
[^{}] # anything other than braces
| # ...or...
\g<brace_expression> # a nested brace expression
)*
}
)
\Z
/x
我的版本至今:
re =/
\A
(?<brace_expression>
(?:
(?<brace> {) | (?<bracket> \[) | (\()
)
(
[^{}\[\]()] # anything other than braces
| # ...or...
\g<brace_expression> # a nested brace expression
)*
(?(<brace>) } | (?(<bracket>) \] | \)))
)
\Z
/x
它正確地匹配 「{XYZ}」, 「[XYZ]」, 「(XYZ)」,並正確失敗以匹配「{xyz]」之類的內容,但遞歸併不像我預期的那樣。它無法匹配嵌套括號表達式,如「{[]}」。我錯過了什麼?