我想实现的是查找满足正则条件的字符串,google了一下,发现都是用的boost中的函数,难道标准库中没有相关函数么?
2 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
在Linux下你可以很方便的使用regex.h提供的库。我先贴一段代码展示一下RE在C语言里是怎么用的,比较粗略点#include #include #include #include #include intmain(){char*bematch="hhhericchd@gmail.com";char*pattern="h{3,10}(.*)@.{5}.(.*)";charerrbuf[1024];charmatch[100];regex_treg;interr,nm=10;regmatch_tpmatch[nm];if(regcomp(®,pattern,REG_EXTENDED)<0){regerror(err,®,errbuf,sizeof(errbuf));printf("err:%s\n",errbuf);}err=regexec(®,bematch,nm,pmatch,0);if(err==REG_NOMATCH){printf("nomatch\n");exit(-1);}elseif(err){regerror(err,®,errbuf,sizeof(errbuf));printf("err:%s\n",errbuf);exit(-1);}for(inti=0;i<10&&pmatch[i].rm_so!=-1;i++){intlen=pmatch[i].rm_eo-pmatch[i].rm_so;if(len){memset(match,'\0',sizeof(match));memcpy(match,bematch+pmatch[i].rm_so,len);printf("%s\n",match);}}return0;}我打算看看一个邮件地址是否匹配我所提供的pattern。这个邮件地址是hhhericchd@gmail.compatern为"h{3,10}(.*)@.{5}.(.*)"
慕妹3146593
TA贡献1820条经验 获得超9个赞
C++98里肯定是没有正则库的C++0x有std::regex,目前只有VS2010+支持GCC(libstd++)不支持PCRE/PCRE++是比较老牌的C/C++正则库,跨平台linux下glibc里有正则库,直接include"regex.h"windows下可以用com调vbscript的IRegExp2正则接口,任何版本windows适用,不需要任何额外依赖,速度也很快boost里也有正则,但是boost库东西太多,相当臃肿
添加回答
举报
0/150
提交
取消