为了账号安全,请及时绑定邮箱和手机立即绑定

c++标准库中没有关于正则匹配字符串的函数么?

c++标准库中没有关于正则匹配字符串的函数么?

慕雪6442864 2019-03-29 11:00:15
我想实现的是查找满足正则条件的字符串,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}.(.*)"
                            
查看完整回答
反对 回复 2019-03-29
?
慕妹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库东西太多,相当臃肿
                            
查看完整回答
反对 回复 2019-03-29
  • 2 回答
  • 0 关注
  • 437 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信