zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【正则表达式】快速学习一个c语言的实例

2023-06-13 09:15:03 时间

博主昵称:一拳必胜客 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门--计算机考研 创作初心:本博客的初心是每天分享记录自己学习的脚步,和各位技术友探讨交流,同时给后人以参考; 博主研究方向:渗透测试、嵌入式、机器学习; 博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ;

 特别鸣谢:木芯工作室 孔子学鼓琴师襄子,十日不进。师襄子曰:“可以益矣。”孔子曰:“丘已习其曲矣,未得其数也。”有间,曰:“已习其数,可以益矣。”孔子曰:“丘未得其志也。”有间,曰:“已习其志,可以益矣。”孔子曰:“丘未得其为人也。”有间,有所穆然深思焉,有所怡然高望而远志焉。曰:“丘得其为人,黯然而黑,几然而长,眼如望羊,如王四国,非文王其谁能为此也!”师襄子辟席再拜,曰:“师盖云文王操也。”


一、概念梳理

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(&reg,pattern,flag);   //执行正则表达式和缓存的比较   status=regexec(&reg,buf,nmatch,pmatch,0);   //打印匹配的字符串   for(i=pmatch[0].rm_so;i<pmatch[0].rm_eo;++i){     putchar(buf[i]);   }   printf("\n");   regfree(&reg);   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; }