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]”之类的内容,但递归并不像我预期的那样。它无法匹配嵌套括号表达式,如“{[]}”。我错过了什么?