#include <regex>
#include <string>
#include <iostream>
std::string remove_password(std::string const& input)
{
const char prog[] = R"((.*password\((["']))(?:\\\2|(?!\2)[^])*?(\2.*))";
auto reg = std::regex(prog);
return std::regex_replace(input, reg, "$1********$3");
}
int main()
{
using namespace std::literals;
auto test_string = R"__(select * from run_on_hive(server('hdp230m2.labs.teradata.com'),username('vijay'),password('vijay'),dbname('default'),query('analyze table default.test01 compute statistics'));)__";
std::cout << remove_password(test_string);
}
I2luY2x1ZGUgPHJlZ2V4PgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8aW9zdHJlYW0+CgpzdGQ6OnN0cmluZyByZW1vdmVfcGFzc3dvcmQoc3RkOjpzdHJpbmcgY29uc3QmIGlucHV0KQp7CiAgICBjb25zdCBjaGFyIHByb2dbXSA9IFIiKCguKnBhc3N3b3JkXCgoWyInXSkpKD86XFxcMnwoPyFcMilbXl0pKj8oXDIuKikpIjsKICAgIGF1dG8gcmVnID0gc3RkOjpyZWdleChwcm9nKTsKICAgIHJldHVybiBzdGQ6OnJlZ2V4X3JlcGxhY2UoaW5wdXQsIHJlZywgIiQxKioqKioqKiokMyIpOwp9CgppbnQgbWFpbigpCnsKICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmxpdGVyYWxzOwoKICAgIGF1dG8gdGVzdF9zdHJpbmcgPSBSIl9fKHNlbGVjdCAqIGZyb20gcnVuX29uX2hpdmUoc2VydmVyKCdoZHAyMzBtMi5sYWJzLnRlcmFkYXRhLmNvbScpLHVzZXJuYW1lKCd2aWpheScpLHBhc3N3b3JkKCd2aWpheScpLGRibmFtZSgnZGVmYXVsdCcpLHF1ZXJ5KCdhbmFseXplIHRhYmxlIGRlZmF1bHQudGVzdDAxIGNvbXB1dGUgc3RhdGlzdGljcycpKTspX18iOwoKICAgIHN0ZDo6Y291dCA8PCByZW1vdmVfcGFzc3dvcmQodGVzdF9zdHJpbmcpOwp9