c使用regex库进行正则匹配

C语言其实也可以直接使用自带的regex库进行一些基础的匹配操作,其实主要就是使用regcomp,regexec, regerror和regfree.具体的用法man一下就可以了。下面是一个范例。


$ cat mygrep.c
#include
#include
#include
#include
#define BUF_SIZE 8192
int main(int argc,char *argv[])
{
        regex_t regex;
        int reti;
        char line_buf[BUF_SIZE];
        FILE *FP;
        long int count=0;
        printf("regex is: %s\n",argv[1]);
        reti=regcomp(&regex,argv[1],REG_EXTENDED);
        if(reti){
                perror("complie regex expression error!\n");
        }
        if( (FP=fopen(argv[2],"r"))==NULL){
                perror("open file failed");
        }
        while(fgets(line_buf,BUF_SIZE,FP)){
                reti=regexec(&regex,line_buf,0,NULL,0);
                if (reti==0){
                        ++count;
                }
        }
        regfree(&regex);
        printf("%ld\n",count);
        fclose(FP);
        return 0;

}
此条目发表在ANCI C, System分类目录。将固定链接加入收藏夹。

发表评论