在 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();
}
最佳答案
我找到了解决方案。
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);
}
关于c++ - 如何在 boost::regex 中找到子匹配的字符串位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835217/