- #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;
- }
- //该片段来自于http://www.codesnippet.cn/detail/130520149542.html
来源: http://www.codesnippet.cn/detail/130520149542.html