我为缓存扩展编写了测试。我想按模式从缓存中删除。
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}
表示“ n
的x
个重复”。阅读有关quantifiers here的更多信息。
你可能意思是
string pattern = @"shouldFoundThis-\d+-\d+-\d+";