После вызова std::regex_search
я могу получить только первый строковый результат из std::smatch
по какой-то причине:
Expression.assign("rel=\"nofollow\">(.*?)</a>");
if (std::regex_search(Tables, Match, Expression))
{
for (std::size_t i = 1; i < Match.size(); ++i)
std::cout << Match[i].str() << std::endl;
}
Поэтому я попытался сделать это по-другому - с помощью итератора:
const std::sregex_token_iterator End;
Expression.assign("rel=\"nofollow\">(.*?)</a>");
for (std::sregex_token_iterator i(Tables.begin(), Tables.end(), Expression); i != End; ++i)
{
std::cout << *i << std::endl;
}
Это проходит каждый матч, но также дает мне всю совпадающую строку, а не только захват, который я получил после.Разумеется, это должен быть другой способ, чем сделать еще один std::regex_search
для элемента итератора в цикле?
Заранее спасибо.