PCRE测试

来源:互联网 发布:微信红包牛牛源码v8 编辑:程序博客网 时间:2024/06/06 00:37

简单写一下正则表达式的一个常用的工具,PCRE,用法还算简单,直接上代码了:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include "pcre.h"#include <unistd.h>#include <iostream>#define N 10240#define M 30int main(int argc, char *argv[]){    const char *error;    pcre *re;    int erroffset;    int ovector[M];    int rc = 0, i = 0;    char buffer[N];    memset(buffer, 0, N);    char src[N] = "<title>Hello World</tiiitttitle>";    char pattern[] = "<title>(.*)</[t|i]+le>";    printf("The string is %s\t%d\n", src, strlen(src));    printf("The pattern is %s\n", pattern);    re = pcre_compile(pattern, 0, &error, &erroffset, NULL);    if(NULL == re)    {        printf("PCRE compilation failed at offset %d: %s\n", erroffset, error);        exit(-1);    }    rc = pcre_exec(re, NULL, src, strlen(src), 0, 0, ovector, M);    if(rc < 0)    {        printf("NO match...\n");        exit(-1);    }    char *p = &src[0];    char line[1024];    int ind1 = 0, ind2 = 0;    for(i = 0; i < rc; ++ i)    {        p = &src[0];        ind1 = ovector[2 * i];        ind2 = ovector[2*i + 1];        p = p + ind1;        strncpy(line, p, ind2 - ind1);        line[ind2 - ind1] = 0;        printf("The start %d %c, the end is %d %c\t\t", ind1, src[ind1], ind2, src[ind2]);        printf("The NO. %d is %s\n", i, line);    }    pcre_free(re);    return 0;}

上面的代码中需要说的是有几个函数:
re = pcre_compile(pattern, 0, &error, &erroffset, NULL);
编译正则表达式;
rc = pcre_exec(re, NULL, src, strlen(src), 0, 0, ovector, M);
正则表达式的执行,匹配的结果存于ovector数组中;
pcre_free(re); 释放正则表达式的空间;
详细的一些参数需要查一下函数怎么用

0 0
原创粉丝点击