我提到Regular expressions in C: examples?
似乎必须在使用之前“编译”正则表达式。为什么需要明确这样做?为什么'pcre_exec'不能自己完成工作?
答案 0 :(得分:6)
这是一个设计决定。
可能,但如果它在一步中执行编译和执行,那么多次使用相同的正则表达效率会非常低效。正则表达式的编译是一个计算成本高昂的操作(就像编译用编程语言编写的一些源代码一样昂贵),所以如果你想多次使用正则表达式,那么
expensive_compilation(regex_object, "/the/regular\.expression$");
for (i = 0; i < 1000000; i++)
regex_match(regex_object, next_line_to_be_processed);
与在循环中移动(冗余)编译相比,显着更快。