Есть простейший код, почему std::regex_search возвращает true, а сами совпадения не выводятся?
#include <iostream>
#include <regex>
int main(int argc, const char * argv[])
{
std::string strs[] = {
"/users/{id}",
"/users/{i:id}"
};
std::regex pattern("{(?:(\\w+):)*(\\w+)}");
std::smatch matches;
for (auto str : strs) {
std::cout << "String: " << str << std::endl;
std::cout << "Match: " << std::boolalpha << std::regex_search(str, matches, pattern) << std::endl;
for (auto match : matches) {
std::cout << match.str() << std::endl;
}
}
}
String: /users/{id}
Match: true
String: /users/{i:id}
Match: true