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;  
  
}