【发布时间】:2011-11-27 10:23:21
【问题描述】:
我正在编写一个影响分析工具,它将解析一堆选定的文件类型,并在文件中找到类和方法调用(在本例中为 .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# 文件解析器能够为我提供文件中的方法名和类名列表?
【问题讨论】:
-
[a-zA-Z]不会将其用于 C# 方法名称。例如。 "private void µäか() {}" 是一个有效的 C# 方法声明。 -
感谢 Jens,此工具仅在我公司内部不用于外部商业用途,我们只用英文编写代码,因此它适用于“我们”,但感谢您指出这一点,这是一个非常有效点。