结合上篇C语言断言,则可以以通用的方式,完成对所有函数调试过程输入参数的合法性校验。
#define REG_EXTENDED 1
#define REG_NOMATCH 0
int my_match(char* pattern,char* buf){
int status,i;
int flag=REG_EXTENDED;
regmatch_t pmatch[1];
const size_t nmatch=1;
regex_t reg;
//编译正则模式
regcomp(®,pattern,flag);
//执行正则表达式和缓存的比较
status=regexec(®,buf,nmatch,pmatch,0);
//打印匹配的字符串
for(i=pmatch[0].rm_so;i<pmatch[0].rm_eo;++i){
putchar(buf[i]);
}
printf("\n");
regfree(®);
return status;
}
int get_regex(void)
{
char pattern[1024]="1[0-9]{10}$";
char buf[1024]=“41509030127”;
int status=my_match(pattern,buf);
if(status==REG_NOMATCH)
printf("No match!\n");
else if(0 == status){
printf("匹配成功!\n");
}
return 0;
}
1-9 ↩︎