c# - 将多个动态生成的正则表达式缓存到磁盘

标签 c# regex caching

我有一个正在开发的程序,它使用大量(>100)动态生成的 Regex 表达式。每个正则表达式都用于处理大量字符串(视情况而定,这可能大于 2k),因此我编译了它们,并在内部缓存了它们的使用。但是,该程序会重复运行(它是构建工具的一部分),并且每次程序启动时编译那些动态生成的表达式都会花费大量时间。我已经有一个磁盘缓存(如果缓存有效则不需要解析),并且可以在其中存储编译的 Regex 表达式,但是我似乎无法找到正确执行此操作的方法。我首先想到使用 Regex.CompileToAssembly,但是 Mono 不支持它,程序需要在 Mono 和 MS.net 上运行。因此,我想不出一种缓存表达式的好方法。我只需要编译后的 Regex 中的 IsMatch(string) 方法,我确实可以选择修改 Mono Regex 实现并将其包含在我的程序中,但我不知道从哪里开始。

最佳答案

您可以创建另一个程序,它将在构建步骤中编译表达式。然后为您的项目提供已编译的程序集。这将消除 Mono 上不支持 Regex.CompileToAssembly 的问题。

关于c# - 将多个动态生成的正则表达式缓存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8331116/

相关文章:

c# - Xamarin 表单绑定(bind)。如何根据某些条件显示 3 个不同字符串中的 1 个

c# - 从数据库中获取 int 类型 c#

java - 解析 XML 仅获取注释和日期值

java - 在 Java 中使用正则表达式转义双斜杠

php - 将缓存添加到 Zend\Form\Annotation\AnnotationBuilder

c# - 请尝试使用 Dictionary<Dictionary<int, int>, Dictionary<int, int>> 的建议

cricinfo记分卡的html解析

caching - 对于缓存 GPU 来说,哪种内存访问模式更高效?

entity-framework - 从 IQueryable 生成缓存键以缓存 EF Code First 查询的结果

c# - 如何使用 selenium rc for c# 处理验证消息?