首页 > 解决方案 > 在.net中运行多个正则表达式的有效方法

问题描述

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

如果发现 这个问题,那么目的是从所有正则表达式中创建一个大型自动机。

我试过这段代码:

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

但显然它的性能很差,特别是当没有匹配任何正则表达式时,因此代码必须检查所有正则表达式。

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

标签: c#.netregex

解决方案


也许您可以并行检查:

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

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

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


推荐阅读