gpt4 book ai didi

c# - 如何在 C# 中编译正则表达式

转载 作者:行者123 更新时间:2023-12-04 05:38:27 30 4
gpt4 key购买 nike

我的代码如下所示,用于检测字符串是否与正则表达式匹配,这两个匹配都作为此方法的参数发送。

private bool Set(string stream, string inputdata) 
{

bool retval = Regex.IsMatch(inputdata, stream, RegexOptions.IgnoreCase);
return retval;
}

我读过缓存和编译表达式将使正则表达式比较更快,我有下面显示的此类代码示例,但我不知道如何修改我原来的代码 Set( ) 上面的方法,以利用编译。

如何修改 Set() 方法以应用下面显示的代码?

static Dictionary<string, Regex> regexCache = new Dictionary<string, Regex>();

private Regex BuildRegex(string pattern)
{
Regex exp;
if (!regexCache.TryGetValue(pattern, out exp))
{
var newDict = new Dictionary<string, Regex>(regexCache);
exp = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
newDict.Add(pattern, exp);
regexCache = newDict;
}

return exp;
}

我使用了 exp.IsMatch 而不是 Regex.IsMatch,但这是一个私有(private)变量,所以我不知道如何继续。

最佳答案

private bool Set(string stream, string inputdata) 
{
var regex = BuildRegex(stream);
bool retval = regex.IsMatch(inputdata);
return retval;
}

static Dictionary<string, Regex> regexCache = new Dictionary<string, Regex>();

private static Regex BuildRegex(string pattern)
{
Regex exp;

if (!regexCache.TryGetValue(pattern, out exp))
{
exp = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
regexCache.Add(pattern, exp);
}

return exp;
}

关于c# - 如何在 C# 中编译正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11608823/

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