boost::regex_search(start, end, what, pattern)
之后我可以通过调用what.position()
找到搜索字符串中完全匹配的起始位置。
如何找到子匹配的位置?
我需要这样的代码:
if(boost::regex_search(start, end, what, pat))
{
int len = what["namedGroup"].length();
int pos = what["namedGroup"].position();
}
答案 0 :(得分:3)
我找到了解决方案。
boost :: match_results的每个元素,在我的例子中,std :: string :: const_iterator的boost :: match_results,都有第一个和第二个属性,它相应地指向搜索字符串中此子匹配的开始和结束迭代器。因此,您可以使用迭代器或通过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);
}