我正在编写一个影响分析工具,它将解析一堆选定的文件类型,并在文件中找到类和方法调用(在本例中为.cs文件).我设法编写了一个正则表达式,可以找到一行代码是否为方法调用.
Regex re = new Regex(
@"\b(public|private|internal|protected)\s*" +
"(static|virtual|abstract)?\s*[a-zA-Z]*\s[a-zA-Z]+\s*" +
"\((([a-zA-Z\[\]\<\>]*\s*[a-zA-Z]*\s*)[,]?\s*)+\)");
Run Code Online (Sandbox Code Playgroud)
然而; 我无法弄清楚如何从正则表达式中获取方法名称.它将一行识别为匹配,但如何提取实际方法名称.对此的任何帮助都会很棒.
此外; 我不确定这是不是它实际上是如何完成的,但还有其他(最新的)c#文件解析器能够从文件中提供方法名称和类名列表吗?
您可以将表示方法的部分放入如下所示的组中:
(?<method>[a-zA-Z]+)
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样访问它:
Match match = regex.Match(line);
if (match.Success)
{
string method = match.Groups["method"].Value;
}
Run Code Online (Sandbox Code Playgroud)
但是,您的正则表达式在匹配方法名称方面存在各种问题:
要从C#文件中获取方法名称,您确实需要能够理解C#的东西.请注意,Roslyn项目可能会使这类事情变得更加容易 - 我们会在第一次预览出来时看到,很快就会出现......
| 归档时间: |
|
| 查看次数: |
6295 次 |
| 最近记录: |