gpt4 book ai didi

c# - 缓存模式键的正则表达式 isMatch

转载 作者:行者123 更新时间:2023-11-30 15:27:44 27 4
gpt4 key购买 nike

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

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+";

关于c# - 缓存模式键的正则表达式 isMatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26932024/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com