日期:2014-05-17  浏览次数:20865 次

求一个组平衡正则表达式
我要实现通过正则表达式解析一个字符串,字符串是这样的:

EN(n+EN(wt)+EN(tt))
要解析出来三个函数,就是3个En函数,现在正则表达式不会写,我写得如下:
EN(?'group'\()(.*)(?'-group'\))(?(group)(?!))

这样解析出来第一次可以解析出来,函数为en,参数为:n+EN(wt)+EN(tt),这个是正确的,但是当解析n+EN(wt)+EN(tt)的时候,解析就不是两个函数,而是一个函数,参数是 wt)+EN(tt ,这个时候其实是要解析乘两个函数才是正确的,不知道哪里要改下,还希望高人指点
------解决方案--------------------
 string str = "n+EN(wt)+EN(tt)";
            var ary = Regex.Matches(str, @"(?i)en\((((?<g>\()
------解决方案--------------------
(?<-g>\))
------解决方案--------------------
[^()]+)*)\)(?(g)(?!))").OfType<Match>().Select(T => "函数:EN  参数:" + T.Groups[1].Value).ToArray();