【发布时间】:2014-02-24 13:56:24
【问题描述】:
我正在尝试使用 Boost 将字符串中的每个非字母字符替换为 " ":
std::string sanitize(std::string &str)
{
boost::regex re;
re.imbue(std::locale("fr_FR.UTF-8"));
re.assign("[^[:alpha:]]");
str = boost::regex_replace(str, re, " ");
return str;
}
int main ()
{
std::string test = "(ça) /.2424,@ va très bien ?";
cout << sanitize(test) << endl;
return 0;
}
结果是a va tr s bien,但我想得到ça va très bien。
我错过了什么?
【问题讨论】:
-
旁注:在 PCRE 中,您将使用
u标志来获得所需的结果。我一直在搜索 boost 库,但找不到任何有希望的东西。另一方面,您可能想在表达式[^[:alpha:]]+中添加一个加号,然后您必须从左/右修剪空格。 Demo -
感谢@HamZa 的提示!
标签: c++ regex boost internationalization