在.net中运行多个正则表达式的有效方法

我有一千种正则表达式,我试图以有效的方式进行匹配。

if found this question, that purpose to create a big automata from all regexes.

我尝试使用以下代码:

regexEndpoints.FirstOrDefault(x => x.UrlPathRegex.IsMatch(urlPath))

但是显然它具有非常差的性能,特别是在没有匹配任何正则表达式的情况下,因此代码必须检查所有正则表达式。

我的问题是,如何在C#中运行多个正则表达式以获得更好的性能?

评论
  • wodio
    wodio 回复

    也许您可以并行检查它:

    xxxxx found = null;
    Parallel.ForEach(regexEndpoints, (x, state) =>
    {
        if(x.UrlPathRegex.IsMatch(urlPath)){
            found = x;
            state.stop();
        }
    });
    
    if(found != null) {
        //do something
    }
    

    我的C#有点生锈,但是您明白了。