Я думаю, это будет выглядеть примерно так:
std::string unescape(const std::string s)
{
std::string temp = boost::regex_replace(s, "%u(....)", "&#x$1;", boost::match_default);
temp = boost::regex_replace(temp, "%u(..)", "&#x$1;", boost::match_default);
return temp;
}
Но я предполагаю, что .
(DOT) должен соответствовать только шестнадцатеричным значениям, и в этом случае я бы выбрал что-то вродеэто вместо этого:
std::string unescape(const std::string s)
{
return boost::regex_replace(s, "%u([0-9a-fA-F]{2}|[0-9a-fA-F]{4})", "&#x$1;",
boost::match_default);
}
(обратите внимание, что я не проверял это!)