小编ygg*_*sil的帖子

增强正则表达式捕获组

经过一天的黑客攻击和阅读后,我对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)

c++ regex boost boost-regex

5
推荐指数
1
解决办法
3291
查看次数

标签 统计

boost ×1

boost-regex ×1

c++ ×1

regex ×1