boost Regex

本文介绍如何在Visual C++ 6.0环境中利用Boost库的正则表达式功能识别并解析文本中的电子邮件地址。文章详细说明了Boost库的引入步骤及编译过程中的常见问题解决方法,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【需求】

从一段文字中匹配出email,将email与其他文字切分开,并标记为超链接。

【分析】

可以使用正则表达式来实现,boost::regex_search可以实现将一段文字的匹配字串列出,通过循环调用达到遍历所有文字。

【实现】

1,  VC6.0可以使用boostRegex,由于Boost1.34_1后就不支持VC6.0,故采用boost_1.34_1

2,  添加boost到工程

2.1,可参照此网页http://blog.youkuaiyun.com/yysdsyl/article/details/1781546

 

error: 'memset' : ambiguous call to overloaded function.

编译的时候如果碰到上面的错误,请参考网站做修改:http://lists.boost.org/boost-users/2008/12/43116.php

 

网页上的方法是对所有工程适用,如果想对某个固定的工程适用,需要做以下几处修改:

  • boost_1_34_1文件夹放在工程目录下,并将编译好的Regex lib文件夹boostRegexLib放在boost_1_34_1目录下。
  • Settings->C++->Category->Preprocessor->Additional includedirectories:添加 boost_1_34_1
  • Settings->Link->Category->Input->Additional librarypath:添加 boost_1_34_1\boostRegexLib
  • 链接的时候会提示错误,LINK: fatal error LNK1104: cannot open file"libboost_regex-vc6-mt-1_34_1.lib",此时应该修改”libboost_regex-vc6-mt-1_34.lib””libboost_regex-vc6-mt-1_34_1.lib”

3,  使用boostRegex

经查看,boost::regex_search最符合预期,它会将一段文字的匹配的字串列出,可以通过循环调用达到遍历所有文字。

可以将boost::regex_search的匹配结果(email在原字串中的起始位置和结束位置)依次装入队列中,取得所有email的遍历结果后,遍历字串,

每次boost::regex_searc匹配的结果会

调用boost::regex_search

//save matchresult
boost::cmatchmatch;
// email regex:"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
boost::regexreg("(\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*)");
while(boost::regex_search(pStr, match, reg))
{
	…
	pStr = match[0].second;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值