使用Boost Regex 的regex_search进行遍历搜索详解编程语言
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