我正在编写一个影响分析工具,它将解析一堆选定的文件类型并查找文件(在本例中为 .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*)+\)");
然而;我不知道如何从正则表达式中获取方法名称。它将一行识别为匹配,但我如何提取实际的方法名称。对此的任何帮助都会很棒。
此外;我不确定这是否是实际完成的方式,但是是否有任何其他(最新)c# 文件解析器能够为我提供文件中的方法名称和类名称列表?
您可以将代表方法的部分放入group像这样:
(?<method>[a-zA-Z]+)
然后你可以像这样访问它:
Match match = regex.Match(line);
if (match.Success)
{
string method = match.Groups["method"].Value;
}
但是,您的正则表达式目前在匹配方法名称方面存在各种问题:
- 它不处理泛型(泛型方法、参数或返回值)
- 它不处理带有数字或 _ 的标识符
- 它不处理具有默认访问修饰符的方法
- 它将匹配包含看起来像方法声明的字符串文字
要从 C# 文件中获取方法名称,您确实需要一些能够理解 C# 的东西。请注意,Roslyn 项目很可能会使此类事情变得更加容易 - 我们很快就会看到第一个预览版何时发布......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)