正则表达式 怎么 匹配一个 完整的函数

正则表达式 如何 匹配一个 完整的函数
比如下面这段代码,如果我用:
 Regex r = new Regex(@"main\(.*\)[\s\S]*?\{[\s\S]*;[\s\S]*}");//
                        MatchCollection mc = r.Matches(file_str);
                        foreach (Match m in mc)
                        {
                            MessageBox.Show(m.Groups[0].Value.ToString());
                        }
就会匹配到下一个函数的}
我想要的是匹配 main(){} 这个函数。。


main()
{
    int arry[5] = {23,1,21,4,19};
    int i,j,k;
    void quiksort(int a[],int low,int high);
    quiksort(arry,0,4);
    for(i=0;i<5;i++)
    {
        printf("%d ",arry[i]);
    }
    printf("\n");
}
void quiksort(int a[],int low,int high)
{
    int i = low;
    int j = high;
    int temp = a[i];

    if( low < high)
    {
        while(i < j)
        {
            while((a[j] >= temp) && (i < j))
            {
                j--;
            }
            a[i] = a[j];
            while((a[i] <= temp) && (i < j))
            {
                i++;
            }
            a[j]= a[i];
        }
        a[i] = temp;
        quiksort(a,low,i-1);
        quiksort(a,j+1,high);
    }
    else
    {
        return;
    }
}

------解决方案--------------------
先找到main(){的最后字符位置,标记为left_flag_index,再运行下面代码
                        for (i = left_flag_index; i < file_str.Length; i++)
                        {
                            if (file_str[i] == '{' && flag == false)
                            {
                                flag = true;
                            }
                            else if (file_str[i] == '}' && flag == true)
                            {
                                flag = false;
                            }
                            else if (file_str[i] == '}' && flag == false)