日期:2014-05-18  浏览次数:20614 次

求助:正则表达式匹配
想匹配若干字母后面跟(,后面再跟一些字符,后面跟),并把最前面的那些字母作为组,但是遇到这种情况:a(b(c()))。在c#中试只能找到最外面的a,找不到b和c,有什么办法能把a   b   c都找到呢?

------解决方案--------------------
string text = @ "aa(bs(c()))。 ";

Regex re = new Regex(@ "(? <txt> [^\(]+)\( ");
foreach(Match m in re.Matches(text))
{
Console.WriteLine(m.Groups[ "txt "].Value);
}
------解决方案--------------------
这个看楼主的需求吧,如果只是取出a b c,那很简单

string test = @ "a(b(c()))d(e) ";
MatchCollection mc = Regex.Matches(test, @ "[^()]+(?=\() ");
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n ";
}


但是如果楼主要取出
c()
b(c())
a(b(c()))
d(e)
这样的分组,倒是可以用正则来实现,不过正则实现这个就比较吃力了,可以用其它方式来实现,如果有这个需要,说明一下
------解决方案--------------------
楼主还是给实例吧,然后给出你想要的结果,一定要有结果

暂时按楼主的意思来看,正则很难做到,至少不是单纯的一个正则就可以做到的