日期:2014-05-18 浏览次数:21196 次
//以下代码属于变量的定义语句 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()
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); }
------解决方案--------------------
Regex re = new Regex(@"([\w.\]\[]+)\s+(\w+)(?:;|\s*=)");
------解决方案--------------------
可以试试看用CSharpCodeProvider.Parse(源代码流)来得到一个CodeCompileUnit。
从CodeCompileUnit可以拿到所有的CodeMemberField,
然后它的类型,名字,甚至注释就都有了。
------解决方案--------------------
bool IsDef(string codeTxt) { string patternstr = @"^\w+(\.\w+)*\s+\w+\s*(;|=)"; return Regex.Match(codeTxt, patternstr).Success; }
------解决方案--------------------
bool IsDef(string codeTxt) { string patternstr = @"^\s*\w+(\.\w+)*\s+\w+\s*(,|;|=)"; return Regex.IsMatch(codeTxt, patternstr); }
------解决方案--------------------
bool IsFunction(string CodeTxt) { return Regex.IsMatch(CodeTxt,@"[^=]*\w+(\.\w+)*\s+\w+\s*\("); }