博主昵称:一拳必胜客 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门--计算机考研 创作初心:本博客的初心是每天分享记录自己学习的脚步,和各位技术友探讨交流,同时给后人以参考; 博主研究方向:渗透测试、嵌入式、机器学习; 博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ;
特别鸣谢:木芯工作室 孔子学鼓琴师襄子,十日不进。师襄子曰:“可以益矣。”孔子曰:“丘已习其曲矣,未得其数也。”有间,曰:“已习其数,可以益矣。”孔子曰:“丘未得其志也。”有间,曰:“已习其志,可以益矣。”孔子曰:“丘未得其为人也。”有间,有所穆然深思焉,有所怡然高望而远志焉。曰:“丘得其为人,黯然而黑,几然而长,眼如望羊,如王四国,非文王其谁能为此也!”师襄子辟席再拜,曰:“师盖云文王操也。”
一、概念梳理
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; }