提升regex_search无法找到第一场比赛

时间:2012-12-10 02:55:06

标签: c++ regex boost boost-regex

boost::regex re("(abc)(.*?)");
boost::smatch m;
std::string str = "abcdlogin";
boost::regex_search(str, m, re);

我发现m [1]。第一个是“abcdlogin”,m [1]。第二个是“dlogin”。

但我认为是m [1]。首先应该是“abc”?

1 个答案:

答案 0 :(得分:1)

documentation中所述:

  

m [n] .first :对于所有整数n< m.size(),序列的开头   匹配子表达式n。或者,如果子表达式n   不参加比赛,然后持续。

     

m [n] .second :对于所有整数n< m.size(),序列的结尾   匹配子表达式n。或者,如果子表达式n   不参加比赛,然后持续。

注意它们是如何迭代器到匹配的子表达式中。 在您的示例中,如果您想要一个包含"abc"的字符串,则可以构造如下字符串:std::string s(m[1].first, m[1].second);