字符串可以类似于以下之一:
a(b,c)
a(a(b,c),d)
a(a(a(a(a(b,c),d),a(e,f)),g),h)
etc
Run Code Online (Sandbox Code Playgroud)
我想匹配无限数量的"a(x,y)".我怎么能用Regex做到这一点?这就是我所拥有的:
\\w\\(((?:\\([a-zA-Z0-9]+\\))|(?:[a-zA-Z0-9]+)),((?:\\([a-zA-Z0-9]+\\))|(?:[a-zA-Z0-9]+))\\)
Run Code Online (Sandbox Code Playgroud)
它只匹配两个"a(x,y)"的递归.
Java的标准正则表达式lib不支持递归,因此您无法将此类常规嵌套构造与其匹配.
但是在支持递归(Perl,PCRE,.NET等)的风格中你可以使用如下表达式:
\w+(?:\((?R)(?:,(?R))*\))?
Run Code Online (Sandbox Code Playgroud)