我有一个字符串,
userStmt:
SELECT * FROM RUN_ON_HIVE(SERVER('10.23.40.23'),USERNAME('user'),PASSWORD('pass'),DBNAME('default'),QUERY('ANALYZE TABLE default.test01 COMPUTE STATISTICS'));
我正在尝试将密码子句转换为“****”。
String sanitizeduserstmt=userStmt;
boost::regex pw_re("PASSWORD\\('[^']*'\\)");
boost::regex_replace(sanitizeduserstmt, pw_re, "PASSWORD('****')");
但这不起作用。谁能告诉我哪里出错了? TIA
答案 0 :(得分:1)
boost::regex_replace
方法不会修改输入字符串,您需要将值赋值回变量。
在您的情况下,修复程序将类似于
#include <boost/regex.hpp>
#include <iostream>
using namespace std;
int main() {
string sanitizeduserstmt="SELECT * FROM RUN_ON_HIVE(SERVER('10.23.40.23'),USERNAME('user'),PASSWORD('pass'),DBNAME('default'),QUERY('ANALYZE TABLE default.test01 COMPUTE STATISTICS'));";
boost::regex pw_re("PASSWORD\\('[^']*'\\)");
sanitizeduserstmt=boost::regex_replace(sanitizeduserstmt, pw_re, "PASSWORD('****')");
std::cout << "Result: " << sanitizeduserstmt << "\n";
// => Result: SELECT * FROM RUN_ON_HIVE(SERVER('10.23.40.23'),USERNAME('user'),PASSWORD('****'),DBNAME('default'),QUERY('ANALYZE TABLE default.test01 COMPUTE STATISTICS'));
}
请参阅Coliru demo。