我找到了解决方案。
boost::match_results 的每个元素,在我的例子中,std::string::const_iterator 的 boost::match_results 都有属性 first 和 second,它们对应地指向搜索字符串中该子匹配的开始和结束迭代器。因此,您可以使用迭代器或通过 std::distance() 将它们转换为索引
std::string::const_iterator start, end;
boost::match_results<std::string::const_iterator> what;
start = searchString.begin();
end = searchString.end ();
if(boost::regex_search(start, end, what, pattern))
{
std::string::const_iterator beg = what["namedGroup"].first;
std::string::const_iterator end = what["namedGroup"].second;
int beginIndex = std::distance(start, beg);
}