gpt4 book ai didi

c# - 用于查找 C# 类和方法名称的正则表达式

转载 作者:行者123 更新时间:2023-12-04 23:29:14 26 4
gpt4 key购买 nike

我正在编写一个影响分析工具,它将解析一堆选定的文件类型并找到文件中的类和方法调用(在本例中为 .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/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com