- 论坛徽章:
- 0
|
事情是这样的,我有一个页面内容抽取的爬虫,现在用了 posix regex, 一切都好 但是cpu 非常非常高。
对此 我想用gnu regex 进行一次替代,但是否能提高速度
代码如下
const char *regex_pattern = "<a\\s{1,7}href=[^>\\']{0,300}products/[^>]{0,300}.html[^>]{0,5}>[^<]{0,300}</a>";
struct re_pattern_buffer pattern_buffer ={0};
const char *errcode;
re_syntax_options = RE_SYNTAX_POSIX_BASIC;
/* 進行編譯 Regular Expression */
int patternlen = strlen(regex_pattern); // 获得表达式长度
// 编译表达式
errcode = re_compile_pattern( regex_pattern,
patternlen,
&pattern_buffer);
// 开始search
struct re_registers regs ={0};
int lens = strlen(filestr.c_str()); // 获得原文长度
int result = re_search(&pattern_buffer,
filestr.c_str(),
lens,
0,
lens,
®s);
失败了....
同样的字符用posix 是没有问题的。那里有问题呢?
还有个问题 ,result 返回的是匹配以后的头字符,那里找到最后的结果呢?
|
|