#include <string>
#include <iostream>
#include <regex>
using namespace std;
int main() {
std::regex re(R"((?:^|[^\\])(?:\\{2})*'([^'\\]*(?:\\[\s\S][^'\\]*)*)')");
std::string s("server ('m1.labs.teradata.com') username ('u\\'se)r_*5') password('uer 5') dbname ('default')");
unsigned count = 0;
for(std::sregex_iterator i = std::sregex_iterator(s.begin(), s.end(), re);
i != std::sregex_iterator();
++i)
{
std::smatch m = *i;
cout << "the token is"<<" "<< m.str(1) << endl;
count++;
}
cout << "There were " << count << " tokens found." << endl;
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6cmVnZXggcmUoUiIoKD86XnxbXlxcXSkoPzpcXHsyfSkqJyhbXidcXF0qKD86XFxbXHNcU11bXidcXF0qKSopJykiKTsKCXN0ZDo6c3RyaW5nIHMoInNlcnZlciAoJ20xLmxhYnMudGVyYWRhdGEuY29tJykgdXNlcm5hbWUgKCd1XFwnc2Upcl8qNScpIHBhc3N3b3JkKCd1ZXIgNScpIGRibmFtZSAoJ2RlZmF1bHQnKSIpOwoJdW5zaWduZWQgY291bnQgPSAwOwoJZm9yKHN0ZDo6c3JlZ2V4X2l0ZXJhdG9yIGkgPSBzdGQ6OnNyZWdleF9pdGVyYXRvcihzLmJlZ2luKCksIHMuZW5kKCksIHJlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IHN0ZDo6c3JlZ2V4X2l0ZXJhdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytpKQogICAgewogICAgICAgIHN0ZDo6c21hdGNoIG0gPSAqaTsKICAgICAgICBjb3V0IDw8ICJ0aGUgdG9rZW4gaXMiPDwiICAgIjw8IG0uc3RyKDEpIDw8IGVuZGw7CiAgICAgICAgY291bnQrKzsKICAgIH0KCWNvdXQgPDwgIlRoZXJlIHdlcmUgIiA8PCBjb3VudCA8PCAiIHRva2VucyBmb3VuZC4iIDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==