经过一天的黑客攻击和阅读后,我对boost的正则表达式引擎没有运气,希望这里有人可以提供帮助.
我想从最后一个字段匹配某些输入的每一行中获取第一个字段.
string input =
"449 a dingo ate my baby THING\n"
"448 a dingo ate my baby THING\n"
"445 a dingo ate my baby BOOGNISH\n"
"446 a dingo ate my baby BOOGNISH\n"
"447 a dingo ate my baby STUFF\n";
Run Code Online (Sandbox Code Playgroud)
假设我给我的正则表达式以下字符串......
string re = "^([0-9]+).+?boognish$";
boost::regex expression(re,boost::regex::perl | boost:regex::icase);
Run Code Online (Sandbox Code Playgroud)
然后设置我的比赛
const int subs[] = { 0, 1 };
boost::sregex_token_iterator it(input.begin(), input.end(), expression, subs);
boost::sregex_token_iterator end;
while ( it != end )
{
fprintf(stderr,"%s|\n", it->str().c_str());
*it++;
}
Run Code Online (Sandbox Code Playgroud)
这是我从boost获得的输出,请记住我要求整行和第1组匹配,我还要求"|" 所以我们可以很容易地看到这一行的结尾:
449 a …Run Code Online (Sandbox Code Playgroud)