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”?
答案 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);
。