有没有开源的C语言实现的正则表达式

 我来答
chris_xisaier
2016-11-18 · 知道合伙人软件行家
chris_xisaier
知道合伙人软件行家
采纳数:46 获赞数:110

向TA提问 私信TA
展开全部

正则表达式 是一门数学应用到计算机中的表达式。不是专属于哪种语言,现在各大主流语言都可以通过标准库 或者 模块 或者函数调用正则表达式。

包括 C  C++ PYTHON  ruby  PHP ASP等等

下面贴出一段C语言 使用正则表达式的例子

 1 #include<stdio.h>
  2 #include<sys/types.h>
  3 #include<regex.h>
  4 #include<memory.h>
  5 #include<stdlib.h>
  6 
  7 int main(){
  8 
  9 char *bematch = "hhhericchd@gmail.com";
 10 char *pattern = "h{3,10}(.*)@.{5}.(.*)";
 11 char errbuf[1024];
 12 char match[100];
 13 regex_t reg;
 14 int err,nm = 10;
 15 regmatch_t pmatch[nm];
 16 
 17 if(regcomp(&reg,pattern,REG_EXTENDED) < 0){
 18 regerror(err,&reg,errbuf,sizeof(errbuf));
 19 printf("err:%s\n",errbuf);
 20 }
 21 
 22 err = regexec(&reg,bematch,nm,pmatch,0);
 23 
 24 if(err == REG_NOMATCH){
 25 printf("no match\n");
 26 exit(-1);
 27 }else if(err){
 28 regerror(err,&reg,errbuf,sizeof(errbuf));
 29 printf("err:%s\n",errbuf);
 30 exit(-1);
 31 }
 32 
 33 for(int i=0;i<10 && pmatch[i].rm_so!=-1;i++){
 34 int len = pmatch[i].rm_eo-pmatch[i].rm_so;
 35 if(len){
 36 memset(match,'\0',sizeof(match));
 37 memcpy(match,bematch+pmatch[i].rm_so,len);
 38 printf("%s\n",match);
 39 }
 40 }
 41 return 0;
 42 }
翎2980493052
2016-11-15 · TA获得超过549个赞
知道小有建树答主
回答量:754
采纳率:100%
帮助的人:458万
展开全部
自己写一个吧,难度不大
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式