复合一些任意正则表达式(或者,许多小正则表达式比一个大正则表达式更好)

时间:2012-08-15 13:51:13

标签: c# regex performance

我有一些用户定义的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

我已经决定,因为我无法控制正则表达式,所以盲目地将它们组合是一种天真的方法,更有可能导致错误,而不是提高性能。

2 个答案:

答案 0 :(得分:1)

逻辑OR:

regex1 | regex2 | ...

答案 1 :(得分:1)

我不明白你为什么要这样做,你现在的代码看起来不错,但我认为你可以把所有的字符串定义你的正则表达式并将它们合并成一个:

(?:(?:REGEX1)|(?:REGEX2)|(?:REGEX3)|(?:REGEX4))
相关问题