我正在编写一个影响分析工具,它将解析一堆选定的文件类型并找到文件中的类和方法调用(在本例中为 .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 项目很可能会让这类事情变得更容易——我们将看到第一个预览何时发布,现在很快......
关于c# - 用于查找 C# 类和方法名称的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7593136/