2

我提到了 C 中的正则表达式:示例?

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

4

1 回答 1

6

这是一个设计决定。

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

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

for (i = 0; i < 1000000; i++)
    regex_match(regex_object, next_line_to_be_processed);

将比在循环内移动(冗余)编译要快得多。

于 2013-07-31T07:52:52.647 回答