boost::cregex_token_iterator itrBegin(szStr, szStr+strlen(szStr), reg,-1); boost::cregex_token_iterator itrEnd; for(boost::cregex_token_iterator itr=itrBegin; itr!=itrEnd; ++itr) { cout << *itr << endl; } } Boost.Regex也提供了make_regex_token_iterator函数简化regex_token_iterator...
看一下 regex_iterator 我们已经看过如何用几次regex_search调用来处理所有输入,但另一方面,更为优雅的方法是使用regex_iterator. 这个迭代器类型用一个序列来列举正则表达式的所有匹配。解引用一个regex_iterator会产生对一个match_results实例的引用。构造一个regex_iterator时,你要把指示输入序列的迭代器传给它,并提...
boost::regex reg( szStr ); bool r=boost::regex_match( szStr, mat, reg); if(r) //如果匹配成功 { //显示所有子串 for(boost::cmatch::iterator itr=mat.begin(); itr!=mat.end(); ++itr) { // 指向子串对应首位置 指向子串对应尾位置 子串内容 cout << itr->first-szStr << ' ' <<...
boost::regexreg("(\\w+)@(\\w+).(\\w+)"); 1. if (boost::regex_match(mail,res, reg)) 1. { 1. //既可以通过迭代器获取数据, 也可以通过数组方式获取数据 1. for (boost::cmatch::iterator pos = res.begin(); pos != res.end(); ++pos) 1. { 1. std::cout << *pos <<st...
begin(); string::const_iterator end = line.end(); boost::sregex_token_iterator i(start, end, pattern); boost::sregex_token_iterator j; while ( i != j) { cout << *i++ << endl; } Myfile.close(); } 原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议 ...
boost::regex的默认正则表达式语法是perl语法 boost::regex支持perl regular表达式、POSIX-Extended regular表达式和POSIX-Basic Regular表达式,但默认的表达式语法是perl语法,如果要使用其余两种语法需要在构造表达式的时候明确指定。 例如,下面两种方法效果相同 // e1 is a case sensitive Perl regular expression: ...
pair<BidiIterator, BidiIterator>// 这就很简单了,// 整体的结构就是 std::vector<std::pair<iterator<const char*>, iterator<const char*> > >// 其中第一层迭代器代表 若干个字符串, 例如 regex是 he(.*)ow(.*)ld,待匹配串是helloworld,// 那么第一层迭代器指向{"ll", "or"} 这个数组中的...
typedef match_results<std::wstring::const_iterator> wsmatch; 我们将使用std::string, 所以要留意typedef smatch, 它是match_results<std::string::const_iterator>的缩写。如果regex_search返回true, 传递给该函数的match_results引用将包含匹配的子表达式结果。在match_results里,用已索引的sub_match来表示正则表达...
5.regex_iterator 通过多次调用regex_rearch我们可以处理所有满足匹配的字串。但是,Regex库还给我们提供了一个更优雅的方法——即通过regex_iterator。通过字符串和正则表达式构造regex_iterator的时候会构建一个match_result的对象用于保存匹配结果信息,再通过重载++运算符达到遍历所有匹配信息的目的。关于regex_iterator的详...
#include<iostream>#include<string>#include<boost/regex.hpp>using namespace std;using namespace boost;intmain(){string str="今天是个好日子圣达菲阿斯qweermao đông";std::cout<<str<<std::endl;boost::regexpattern("(好|qwee|今天|mao đông)");boost::sregex_token_iterator end;//需要注...