Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.net中运行多个正则表达式的有效方法_C#_.net_Regex - Fatal编程技术网

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

C# 在.net中运行多个正则表达式的有效方法,c#,.net,regex,C#,.net,Regex,我有一千个正则表达式,我试图以有效的方式匹配它们 如果找到 问题,这个目的是从所有正则表达式创建一个大型自动机 我尝试使用以下代码: regexEndpoints.FirstOrDefault(x => x.UrlPathRegex.IsMatch(urlPath)) 但显然它的性能非常差,特别是当没有任何正则表达式匹配时,因此代码必须检查所有正则表达式 我的问题是如何在c#中运行多个正则表达式以获得更好的性能?也许您可以并行检查它: xxxxx found = null; Parall

我有一千个正则表达式,我试图以有效的方式匹配它们

如果找到 问题,这个目的是从所有正则表达式创建一个大型自动机

我尝试使用以下代码:

regexEndpoints.FirstOrDefault(x => x.UrlPathRegex.IsMatch(urlPath))
但显然它的性能非常差,特别是当没有任何正则表达式匹配时,因此代码必须检查所有正则表达式


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

也许您可以并行检查它:

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

if(found != null) {
    //do something
}

我的c#有点生锈了,但你明白了。

也许你可以同时检查一下:

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

if(found != null) {
    //do something
}

我的c#有点生疏,但你明白了。

你的问题已经解决了。在第一个问题中,我要求一个库,所以他们告诉我,我必须以不同的方式提问,这就是我所做的。至于问题,取决于场景-并行运行,如果速度仍然太慢,请使用,然后我就失去了我的深度=)我非常确定这是一种从所有正则表达式创建大型自动化的方法。类似于RETE算法,合并表达式?你的问题已经解决了。在第一个问题中,我问了一个库,所以他们告诉我,我必须以不同的方式问它,这就是我所做的。至于问题,取决于场景-并行运行,使用,如果仍然太慢,那么我就没有深度=)我非常确定这是一种从所有正则表达式创建大型自动化的方法。类似于RETE算法,合并表达式?谢谢你的回答,问题是代码已经被大量的多任务处理了,对于单个请求,我会有更好的性能,但是对于多个请求,它不会更好。谢谢你的回答,问题是代码已经被大量的多任务处理了,对于单个请求,我会有更好的性能,但是对于多个请求,它不会更好。