我有一些用户定义的Regex
es,我用它来测试一些string
以查看我是否应该排除它们。
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
,这样我就可以从{{1}中删除迭代功能,就像这样。
Exclude
这种方法是否可行,它是否具有潜在的性能优势,还是只是将迭代的负担推入Regex处理器?
修改
所以,我可以这样做,
static bool Exclude(string value)
{
return this.exclusion.IsMatch(value);
}
还有更复杂的选择吗?
编辑2
我已经决定,因为我无法控制正则表达式,所以盲目地将它们组合是一种天真的方法,更有可能导致错误,而不是提高性能。
答案 0 :(得分:1)
逻辑OR:
regex1 | regex2 | ...
答案 1 :(得分:1)
我不明白你为什么要这样做,你现在的代码看起来不错,但我认为你可以把所有的字符串定义你的正则表达式并将它们合并成一个:
(?:(?:REGEX1)|(?:REGEX2)|(?:REGEX3)|(?:REGEX4))