我要匹配以下文字:
(valuex) AnySingleWord (valuey)
我想捕获括号内 valuex,valuey 的文本。困难的是 valuex,valuey 两者都可以包含方括号。例如
((value1) AnySingleWord (value2)) AnySingleWord ((value3) AnySingleWord (value4))
那么我的valuex应该是
(value1) AnySingleWord (value2)
和valuey应该是
(value3) AnySingleWord (value4)
正则表达式可以做一些事情,比如计算左括号已经过去的次数,并匹配直到找到右括号吗?非常感谢。
PS:我可以将开/关括号对的数量限制为 2-3,如果它小到可以用 Regex 求解的话
请您参考如下方法:
是的,你可以使用这个模式:
\(((?>\((?<DEPTH>)|\)(?<-DEPTH>)|[^()]+)*(?(DEPTH)(?!)))\)
这里有关于这种模式的更多信息:
http://blogs.msdn.com/b/bclteam/archive/2005/03/15/396452.aspx
