C# 执行正则表达式需要很长时间

C# 执行正则表达式需要很长时间,c#,.net,regex,predicatebuilder,C#,.net,Regex,Predicatebuilder,我使用这个谓词生成器创建了用于LINQ查询的过滤器表达式。 所以,虽然构建过程中包含了正则表达式以匹配特定条件,但执行任何改进的原因或方法都需要很长时间 例如: stringvalue.contains(word) 执行速度快于: Regex.IsMatch(stringvalue,@"\b"+word+@"\b",regexoptions.compiled) 当然,您编写的正则表达式调用的作用远不止检查子字符串是否存在: 它只检查整个单词“arf”。

我使用这个谓词生成器创建了用于LINQ查询的过滤器表达式。 所以,虽然构建过程中包含了正则表达式以匹配特定条件,但执行任何改进的原因或方法都需要很长时间

例如:

stringvalue.contains(word)
执行速度快于:

Regex.IsMatch(stringvalue,@"\b"+word+@"\b",regexoptions.compiled)

当然,您编写的正则表达式调用的作用远不止检查子字符串是否存在:

  • 它只检查整个单词<代码>“arf”。包含(“a”)==true,但
    Regex.IsMatch(“arf”,@“\ba\b”)==false

  • 它调用编译器来构建整个新的代码块,创建一个新的应用程序域并将其加载到其中,然后调用它(跨应用程序域)

  • 后者尤其没有根据,因为您的正则表达式每次都会更改搜索,所以没有重用来分摊编译和加载生成代码的成本。绝对删除
    RegexOptions.Compiled
    标志

    至于一般的正则表达式,我建议更新到.NET5,正则表达式匹配已经有了高达95%的显著改进,特别是像您这样的简单表达式