首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求识别C#变量定义的正则表达式,该如何解决

2012-01-29 
求识别C#变量定义的正则表达式例如:C# code//以下代码属于变量的定义语句private Expression.FunctionRun

求识别C#变量定义的正则表达式
例如:

C# code
        //以下代码属于变量的定义语句        private Expression.FunctionRun functionRun1;        public System.Xml.XmlDocument SubUserMxXml;        public int MyYearD=0;        public int[] MyInt;        public int MyMonthD=0;        public string MyUnitD="";        public string GetBbName="";        System.Xml.XmlDocument UserMxDoc=New System.Xml.XmlDocument();        //以下代码不是变量的定义语句        InitializeComponent();        SubMxXml=New System.Xml.XmlDocument()    


求一正则表达式算法,搜索上述代码,识别出变量的定义语句,并返回结果:

变量名:functionRun1 类型:Expression.FunctionRun 
……
变量名:UserMxDoc 类型:System.Xml.XmlDocument 
……


[解决办法]
C# code
string str = @"private Expression.FunctionRun functionRun1;";        string patternstr = @"(private|public)\s*(?<str1>.*?)\s*(?<str2>\w+)(;|\s*=)";        MatchCollection mc = Regex.Matches(str, patternstr);        for (int i = 0; i < mc.Count; i++)        {            Response.Write(mc[i].Groups["str1"].Value + ":" + mc[i].Groups["str2"].Value);        }
[解决办法]
C# code
Regex re = new Regex(@"([\w.\]\[]+)\s+(\w+)(?:;|\s*=)");
[解决办法]
可以试试看用CSharpCodeProvider.Parse(源代码流)来得到一个CodeCompileUnit。
从CodeCompileUnit可以拿到所有的CodeMemberField,
然后它的类型,名字,甚至注释就都有了。
[解决办法]
C# code
    bool IsDef(string codeTxt)    {        string patternstr = @"^\w+(\.\w+)*\s+\w+\s*(;|=)";        return Regex.Match(codeTxt, patternstr).Success;    }
[解决办法]
C# code
    bool IsDef(string codeTxt)    {        string patternstr = @"^\s*\w+(\.\w+)*\s+\w+\s*(,|;|=)";        return Regex.IsMatch(codeTxt, patternstr);    }
[解决办法]
C# code
bool IsFunction(string CodeTxt) { return Regex.IsMatch(CodeTxt,@"[^=]*\w+(\.\w+)*\s+\w+\s*\("); } 

热点排行