我有许多用户定义的Regex
es 用于测试某些string
s 以查看是否应该排除它们。
private readonly IEnumerable<Regex> exclusions = <some user defined source>;
static bool Exclude(string value)
{
return this.exclusions.Any(regex => regex.IsMatch(value);
}
我在想,有没有办法将集合exclusions
组合成一个组合exclusion
Regex
,这样我就可以从Exclude
函数中删除迭代,就像这样。
static bool Exclude(string value)
{
return this.exclusion.IsMatch(value);
}
这种方法是否可行,是否具有潜在的性能优势,还是只是将迭代的负担推到正则表达式处理器中?
编辑
所以,我可以简单地做,
var exclusion =
new Regex(string.Join("|", exclusions.Select(e => e.ToString()));
有没有更复杂的选择?
编辑 2
我已经决定,由于我无法控制正则表达式,因此盲目地组合它们是一种天真的方法,更可能导致错误而不是提高性能。