如何解决提升正则表达式捕获组
| 经过一整天的黑客学习和阅读,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\";
假设我给我的正则表达式以下字符串...
string re = \"^([0-9]+).+?boognish$\";
boost::regex expression(re,boost::regex::perl | boost:regex::icase);
然后设置我的比赛
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++;
}
这是我从boost获得的输出,请记住,我要求整行和第1组匹配,我也要求输入“ ||”,以便我们可以轻松看到行尾:
449 a dingo ate my baby THING
448 a dingo ate my baby THING
445 a dingo ate my baby BOOGNISH|
449|
446 a dingo ate my baby BOOGNISH|
446|
我真的想要445 |和446 |仅,但是它给了我449(直到第一个BOOGNISH命中),然后是446。我已经在其他解析器上对其进行了测试,并且看起来工作正常。我在使用Boost时出了什么问题?
先感谢您!
解决方法
根据此条款,您必须将
flag match_not_dot_newline
传递给匹配算法。我认为那将解决您的情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。