在Linux下你可以很方便的使用regex.h提供的库。我先贴一段代码展示一下RE在C语言里是怎么用的
,比较粗略点
#include<stdio.h>
#include<sys/types.h>
#include<regex.h>
#include<memory.h>
#include<stdlib.h>
int main()
{
char *bematch = "hhhericchd@gmail.com";
char *pattern = "h{3,10}(.*)@.{5}.(.*)";
char errbuf[1024];
char match[100];
regex_t reg;
int err,nm = 10;
regmatch_t pmatch[nm];
if(regcomp(®,pattern,REG_EXTENDED) < 0){
regerror(err,®,errbuf,sizeof(errbuf));
printf("err:%s\n",errbuf);
}
err = regexec(®,bematch,nm,pmatch,0);
if(err == REG_NOMATCH){
printf("no match\n");
exit(-1);
}else if(err){
regerror(err,®,errbuf,sizeof(errbuf));
printf("err:%s\n",errbuf);
exit(-1);
}
for(int i=0;i<10 && pmatch[i].rm_so!=-1;i++){
int len = pmatch[i].rm_eo-pmatch[i].rm_so;
if(len){
memset(match,'\0',sizeof(match));
memcpy(match,bematch+pmatch[i].rm_so,len);
printf("%s\n",match);
}
}
return 0;
}
我打算看看一个邮件地址是否匹配我所提供的pattern。这个邮件地址是
hhhericchd@gmail.com patern为
"h{3,10}(.*)@.{5}.(.*)"