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

时间:2013-04-16 12:03:35

标签: c# regex

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

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

样本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

我尝试过像Regex Match all characters between two strings这样的建议。但是,没有成功。

1 个答案:

答案 0 :(得分:1)

对于所有正则表达式的东西都不那么花哨,但是它适用于样本案例......

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.*\]");
    }
}

或者您可以使用单元运行器运行所有文件,它将列出测试的所有名称....