#include <regex>
#include <string>
#include <iostream>
using namespace std;
int main() {
regex r(R"('[^\\']*(?:(?:''|\\.)[^\\']*)*')");
string s(R"(arg1('value1') arg2('value '')2') arg3('user\'~!@#$%^&*_~!@#$%^&"*_-=+[{]}\|;:<.>?21**()**'))");
for(std::sregex_iterator i = std::sregex_iterator(s.begin(), s.end(), r);
i != std::sregex_iterator();
++i)
{
std::smatch m = *i;
std::cout << m.str() << std::endl;
}
return 0;
}
I2luY2x1ZGUgPHJlZ2V4PgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCXJlZ2V4IHIoUiIoJ1teXFwnXSooPzooPzonJ3xcXC4pW15cXCddKikqJykiKTsKCXN0cmluZyBzKFIiKGFyZzEoJ3ZhbHVlMScpIGFyZzIoJ3ZhbHVlICcnKTInKSBhcmczKCd1c2VyXCd+IUAjJCVeJipffiFAIyQlXiYiKl8tPStbe119XHw7OjwuPj8yMSoqKCkqKicpKSIpOwoJZm9yKHN0ZDo6c3JlZ2V4X2l0ZXJhdG9yIGkgPSBzdGQ6OnNyZWdleF9pdGVyYXRvcihzLmJlZ2luKCksIHMuZW5kKCksIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gc3RkOjpzcmVnZXhfaXRlcmF0b3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2kpCiAgICB7CiAgICAgICAgc3RkOjpzbWF0Y2ggbSA9ICppOwogICAgICAgIHN0ZDo6Y291dCA8PCBtLnN0cigpIDw8IHN0ZDo6ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9