zl程序教程

您现在的位置是:首页 >  其他

当前栏目

使用Boost Regex 的regex_search进行遍历搜索详解编程语言

搜索遍历编程语言 使用 详解 进行 search Boost
2023-06-13 09:11:49 时间

然而如果搜索字符串中有多个匹配结果,则需要自己实现了。

在smatch中,有两个成员,官方文档如下:

iterator first:

An iterator denoting the position of the start of the match.

iterator second

An iterator denoting the position of the end of the match.

所以,使用如下方法,可以得到遍历搜索:


[cpp] 
view plain
copy
IT虾米网
IT虾米网

  #include  string   #include  iostream   #include  boost/regex.hpp   int main()  {   std::string str =  192.168.1.1      boost::regex expression( //d+ );   boost::smatch what;     std::string::const_iterator start = str.begin();   std::string::const_iterator end = str.end();   while ( boost::regex_search(start, end, what, expression) )   {   std::cout   what[0]   std::endl;   start = what[0].second;   }   return 0;  } 

结果如下:


[cpp] 
view plain
copy
IT虾米网
IT虾米网

  #include  string   #include  iostream   #include  boost/regex.hpp   int main()  {   std::string str =  192.168.1.1      boost::regex expression( //d+ );   boost::sregex_iterator it(str.begin(), str.end(), expression);   boost::sregex_iterator end;   for (; it != end; ++it)   std::cout   *it   std::endl;     return 0;  } 

效果与上一例相同。   如果不需要遍历,只需要匹配,那更简单:     boost::regex reg( szReg );

    bool r=boost::regex_match( szStr , reg); 或是需要放入一个cmatch 中: {     boost::cmatch mat;

    boost::regex reg( //d+ );    //查找字符串里的数字

    if(boost::regex_search(szStr, mat, reg))

    {

        cout searched: mat[0] endl;

    }

}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/18494.html

c