求指教:PCRE库函数中,pcre_exec()的返回值是什么意思? *ovector数组的元素又是代表什么意
int pcre_exec(const pcre *code, const pcre_extra *extra, const char *subject, int length, int startoffset, int options, int *ovector, int ovecsize)
pcre_exec()返回匹配串的偏移位置
#include <string.h>
#include <stdio.h>
#include <pcre.h>
int main()
{
pcre *re;
const char *error;
int errorOffset, i = 0;
/**
* pcre_exec匹配的结果
* ovector的结构为
* {匹配结果1的起始位置,匹配结果1的结束位置,匹配结果2的起始位置,...匹配结果N的结束位置}
*/
int oveccount = 2, ovector[oveccount];
/**
* rc是pcre_exec匹配到的结果数量
*/
int rc;
/**
* pcre_exec执行的偏移量
* 从匹配到的结果的结束位置开始下一次匹配
*/
int exec_offset = 0;
const char *captured_string;
char *subject = "1t2t3t4t5t6t7t8t9t0tatbtct黄t避孕t";
char *pattern = "[^t]+t";
re = pcre_compile( pattern, PCRE_CASELESS, &error, &errorOffset, NULL );
if ( re == NULL ) {
printf("compilation failed at offset%d: %s\n", errorOffset, error);
return 0;
}
do {
// exec_offset偏移量 默认从1开始,然后循环的时候从匹配到的结果开始
rc = pcre_exec( re, NULL, subject, strlen(subject), exec_offset, 0, ovector, oveccount );
if ( rc > 0 ) {
// 获取到匹配的结果
pcre_get_substring( subject, ovector, rc, 0, &captured_string );
printf("captured string : %s\n", captured_string);
// 设置偏移量
exec_offset = ovector[1];
i++;
}
} while ( rc > 0 );
printf("match %d\n", i);
return 0;
}
#define PCRE_STATIC // 静态库编译选项
#include <stdio.h>
#include <string.h>
#include <pcre.h>
#define OVECCOUNT 30 /* should be a multiple of 3 */
#define EBUFLEN 128......
答案就在这里:PCRE-C语言正则表达式
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?