shootingstars

菩提本无树,明镜亦非台。本来无一物,何处惹尘埃。尘埃乃虚幻,亦何惧之来?

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
五:regex_search学习
regex_search与regex_match基本相同,只不过regex_search不要求全部匹配,即部份匹配(查找)即可。
简单例子:
std::string regstr = "(\\d+)";
boost::regex expression(regstr);
std::
string testString = "192.168.4.1";
boost::smatch what;
if( boost::regex_search(testString, expression) )
{
    std::cout
<< "Have digit" << std::endl; 
}
上面这个例子检测给出的字符串中是否包含数字。

好了,再来一个例子,用于打印出所有的数字
std::string regstr = "(\\d+)";
boost::regex expression(regstr);
std::
string testString = "192.168.4.1";
boost::smatch what;
std::
string::const_iterator start = testString.begin();
std::
string::const_iterator end = testString.end();
while( boost::regex_search(start, end, what, expression) )
{
    std::cout
<< "Have digit:" ; 
    std::
string msg(what[1].first, what[1].second);
    std::cout
<< msg.c_str() << std::endl;
    start 
= what[0].second;
}
打印出:
Have digit:192
Have digit:168
Have digit:4
Have digit:1

posted on 2007-08-01 15:12  shootingstars  阅读(1242)  评论(0编辑  收藏  举报