Skip to main content
 首页 » 编程设计

c#之正则表达式捕获括号内的值,值也包含括号

2024年02月13日26www_RR

我要匹配以下文字:

(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