我为缓存扩展编写了测试。我想按模式从缓存中删除。

a)在此示例中,测试失败

 [Test]
    public void Should_found_by_pattern()
    {
        string pattern = "shouldFoundThis-{0}-{1}-{2}";
        var regex = new Regex(pattern, RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase);
        var keysToRemove = new List<String>();

        var list = new List<string>()
        {
            "shouldFoundThis-15-2-7"
        };

        foreach (var item in list)
            if (regex.IsMatch(item))
                keysToRemove.Add(item);

        keysToRemove.Any().ShouldBeTrue();
    }


b)在此示例中,测试通过

 [Test]
    public void Should_found_by_pattern()
    {
        string pattern = "shouldFoundThis-{0}-{1}";
        var regex = new Regex(pattern, RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase);
        var keysToRemove = new List<String>();

        var list = new List<string>()
        {
            "shouldFoundThis-15-2"
        };

        foreach (var item in list)
            if (regex.IsMatch(item))
                keysToRemove.Add(item);

        keysToRemove.Any().ShouldBeTrue();
    }


为什么Regex IsMatch不匹配模式“ shouldFoundThis- {0}-{1}-{3}”,但是匹配模式“ shouldFoundThis- {0}-{1}”

最佳答案

正则表达式shouldFoundThis-{0}-{1}-{2}与正则表达式shouldFoundThis---相同,并且在主题字符串中顺序找不到三个破折号。

相反,shouldFoundThis-{0}-{1}与可以在您的字符串中找到的shouldFoundThis-相同。

在正则表达式中,x{n}表示“ nx个重复”。阅读有关quantifiers here的更多信息。

你可能意思是

string pattern = @"shouldFoundThis-\d+-\d+-\d+";

08-28 12:20