打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
代码之美——30行代码实现正则表达式匹配器


Rob Pike在《The Practice of Programming》中使用约30行代码,实现了一个正则表达式匹配器,用来处理以下的模型。
字符 含义
c 匹配认字的字母c
.(句点) 匹配任意的单个字符
^ 匹配输入字符串的开头
$ 匹配输入字符串的结尾
* 匹配前一个字符的零个或者多个出现
 这段代码紧凑、优雅,高效并且实用,同时展示了C指针的强大功能。
C代码  
  1. /*match :在text中查找regexp*/  
  2. int match(char *regexp,char *text)  
  3. {  
  4.  if(regexp[0] == '^')  
  5.   return matchhere(regexp+1,text);  
  6.  do/*即使字符串为空也必须检查*/  
  7.   if (matchhere(regexp,text))  
  8.    return 1;  
  9.  }while (*text++!= '\0');  
  10.  return 0;  
  11. }  
  12. /*matchhere在text的开头查找regexp*/  
  13. int matchhere(char *regexp,char *text)  
  14. {  
  15.  if (regexp[0] == '\0')  
  16.   return 1;  
  17.  if (regexp[1] == '*')  
  18.   return matchstar(regexp[0],regexp+2,text);  
  19.  if (regexp[0] == '$' && regexp[1]=='\0')  
  20.   return *text == '\0';  
  21.  if (*text!='\0' && (regexp[0]=='.' || regexp[0]==*text))  
  22.   return matchhere(regexp+1,text+1);  
  23.  return 0;  
  24. }  
  25. /*matchstar :在text的开头查找C*regexp*/  
  26. int matchstar (int c,char *regexp,char *text)  
  27. {  
  28.  do { /*通配符*匹配零个或多个实例*/  
  29.   if (matchhere(regexp,text))  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA正则表达式入门与提高
固定电话+手机号码正则表达式
浅谈如何去使用正则表达式
C语言中嵌入正则表达式
java常用正则表达式
很多正则表达式 ? codante
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服