日期:2014-05-18 浏览次数:21344 次
//以下代码属于变量的定义语句
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*\(");
}