一、概念梳理
1.为什么叫正则表达式?
这样的名字无疑让人一头雾水,反观英文名 regular expression-规则表达式。“一个字符串规则的表述”更加符合实际。
#include<stdio.h> #include<sys/types.h> #include<regex.h> 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 main(){ char pattern[1024]="^[1-9][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; }