Chinaunix首页 | 论坛 | 博客
  • 博客访问: 535963
  • 博文数量: 55
  • 博客积分: 1520
  • 博客等级: 上尉
  • 技术积分: 661
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-19 22:01
文章存档

2013年(1)

2012年(1)

2011年(7)

2010年(16)

2009年(30)

我的朋友

分类: C/C++

2010-03-10 17:32:10

代码如下:
#include 
#include 
#include 
#include 

#define     OK       0
#define     FALSE   -1

int regular(const char* pattern, const char* str, char* res)
{
        int        z;
        regex_t    reg;
        regmatch_t pm;
        char       ebuf[128];

        z = regcomp(®, pattern, 0);
        if (0 != z)
        {
                return FALSE;
        }
        z = regexec(®, str, 1, &pm, 0);
        if (0 != z)
        {
                regerror(z, ®, ebuf, sizeof(ebuf));
                fprintf(stderr, "%s: pattern '%s' \n", ebuf, pattern);
                return FALSE;
        }

        unsigned start = pm.rm_so;
        unsigned end   = pm.rm_eo;
        strncpy(res, str+start, end-start);

        regfree(®);

        return OK;
}

int main(int argc, char **argv)
{
        char result[64] = {0};

        if ( OK == regular("\\[.*\\]", "This is a test program, [google] is my love!!", result) )
        {
                printf("OK\n");
                printf("%s\n", result);
        }
        else
        {
                printf("FALSE\n");
        }

        return 0;
}

程序输出如下:
[root@localhost program]# ./a.out
OK
[google]
阅读(3126) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~