Skip to main content
 首页 » 编程设计

c#之在哪里存储正则表达式

2024年02月03日30开发

当你使用一个 Regex 实例时,它被用在一个方法中,该方法被调用几千次以某种方式解析事物,该方法应该包含 Regex 实例,还是 Regex 实例应该是类作为静态成员?

我觉得对同一个 Regex 进行数千次初始化可能是一种开销。但我主要关心的是最佳实践。

我应该在哪里声明和定义正则表达式?

编辑:伪代码:

static Regex regex ... 
 
IEnumerable<string> Parse (string str) 
{ 
    var matches = // use regex 
    foreach (var match in matches) 
    { 
        ... 
    } 
} 
 
void Main() 
{ 
    foreach (var page in pages) 
    { 
         Parse (page); ... 
    } 
} 

请您参考如下方法:

包装解析功能的类应该包含对正则表达式的私有(private)引用(如果它是静态用法,则可能是静态的),如果您担心那种东西的话。

编辑:

对我来说,这与性能无关,因为存在内部缓存和 Jimmy 提到的所有爵士乐,我认为创建正则表达式可能不如实际正则表达式处理昂贵。它更多地是关于设计原则:工厂方法或解析实用程序在概念上使用一些内部过滤器(正则表达式)为您生成列表。如果它是反复使用的同一个,从概念上讲,这就是您创建一次,然后一直保留并反复使用的东西。