boost::regex_match要求正则表达式匹配整个输入字符串,即从头到尾完全匹配。当正则包含.*时,会扫描整行所有字符直到末尾,导致耗时随字符串长度线性增长。
boost::regex_search则只需在输入字符串中找到正则的一个匹配位置即可。配合boost::match_continuous标志,可以限制只从字符串开头开始搜索,实现前缀匹配效果。
在行首正则匹配场景中,我们只需判断日志行的开头是否符合行首模式(如cnt),完全不关心后面的内容。使用regex_search只需匹配前几个字符即返回结果,时间复杂度从O(n)降为O(1)(n为日志行长度),对于长日志行优化效果尤其显著。




