增强正则表达式捕获组
boost regular expression capture groups
经过几天的黑客攻击和阅读,我对boost的正则表达式引擎运气不佳,希望这里有人能帮忙。
我想从每一行中抓取第一个字段,其中最后一个字段匹配一些输入。
string input =
"449 a dingo ate my baby THINGn"
"448 a dingo ate my baby THINGn"
"445 a dingo ate my baby BOOGNISHn"
"446 a dingo ate my baby BOOGNISHn"
"447 a dingo ate my baby STUFFn";
假设我给正则表达式给定以下字符串。。。
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(直到它击中第一个BOGNISH),然后是446。我已经在其他重新解析器上测试过了,它似乎工作得很好。我的boost怎么了?
提前谢谢!
根据本文,您必须将flag match_not_dot_newline
传递给匹配算法。我认为那会解决你的案子。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++ 使用增强正则表达式库时断言崩溃
- 在带有brew的MacOS上链接时缺少增强ICU正则表达式符号
- C++ 增强正则表达式与标准库正则表达式匹配结果
- 这种使用增强正则表达式库有什么问题
- 正则表达式和增强
- 如何使用增强正则表达式替换方法
- 如何使用增强正则表达式在单行中匹配单词
- 使用 VS2010 C++/增强的正则表达式
- 通过从文件读取来增强正则表达式匹配
- 正则表达式增强c++
- 正则表达式匹配组增强c++
- 增强特殊字符的正则表达式模式
- Qt正则表达式增强正则表达式转换从字符串内部取数
- 增强正则表达式捕获
- 增强正则表达式捕获组
- 使用增强正则表达式库编译程序时遇到问题
- C++ 增强正则表达式不保存捕获
- 增强正则表达式混淆