C# 如何使用正则表达式获取具有特定属性的方法名

C# 如何使用正则表达式获取具有特定属性的方法名,c#,regex,C#,Regex,解析具有特定属性的方法名称时需要帮助 规则: 1) 应列出所有具有最小“[测试”属性的方法。 2) methodName将在名称前有一个空格字符,在名称末尾有“(”符号。很可能是测试属性的下一行或第二行 样本1: [Test] public Type methodName(parametes ...) 样本2: //[Test] public Type methodName(parametes ...) 样本3: [Test (, some names etc)] public Type m

解析具有特定属性的方法名称时需要帮助

规则:
1) 应列出所有具有最小“[测试”属性的方法。
2) methodName将在名称前有一个空格字符,在名称末尾有“(”符号。很可能是测试属性的下一行或第二行

样本1:

[Test]
public Type methodName(parametes ...)
样本2:

//[Test]
public Type methodName(parametes ...)
样本3:

[Test (, some names etc)]
public Type methodName(parametes ...)
样本4:

[Test (, some names etc)]
[Other optional attributes]
public Type methodName(parametes ...)
预期结果:methodName


我尝试了两个类似的建议。但是,没有成功。

对所有的正则表达式都不太感兴趣,但它在示例案例中起作用

var lines = File.ReadAllLines(@"c:\temp\samples.txt");

var matched = false;
foreach (var line in lines)
{
    if(matched)
    {
        var match = Regex.Match(line, @"public");
        if(match.Length > 0)
        {
            matched = false;
            match = Regex.Match(line, @"[a-zA-Z_]+( )?(?=\()"); 
            Console.WriteLine (match.Value);
        }
    }
    else
    {
        matched = Regex.IsMatch(line, @"\[.*Test.*\]");
    }
}

或者您可以使用unit runner运行所有文件,它将列出所有测试的名称……

为什么要使用Regex?您应该使用反射来为您完成工作。我收到了文件列表,每个文件都有不同于文件名的类。我觉得在这种情况下,Regex更倾向于选择n而不是手动。