求指教:PCRE库函数中,pcre_exec()的返回值是什么意思? *ovector数组的元素又是代表什么意
2条回答
- 小灸舞 2016-04-25 08:49关注
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; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 fluent的在模拟压强时使用希望得到一些建议
- ¥15 STM32驱动继电器
- ¥15 Windows server update services
- ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
- ¥15 模糊pid与pid仿真结果几乎一样
- ¥15 java的GUI的运用
- ¥15 Web.config连不上数据库
- ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
- ¥15 怎么配置广告联盟瀑布流
- ¥15 Rstudio 保存代码闪退