为什么在使用PCRE库时需要显式编译正则表达式?

时间:2013-07-31 07:49:33

标签: c pcre

我提到Regular expressions in C: examples?

似乎必须在使用之前“编译”正则表达式。为什么需要明确这样做?为什么'pcre_exec'不能自己完成工作?

1 个答案:

答案 0 :(得分:6)

这是一个设计决定。

可能,但如果它在一步中执行编译执行,那么多次使用相同的正则表达效率会非常低效。正则表达式的编译是一个计算成本高昂的操作(就像编译用编程语言编写的一些源代码一样昂贵),所以如果你想多次使用正则表达式,那么

expensive_compilation(regex_object, "/the/regular\.expression$");

for (i = 0; i < 1000000; i++)
    regex_match(regex_object, next_line_to_be_processed);
与在循环中移动(冗余)编译相比,

显着更快