如何制作正则表达式来过滤所有特殊符号?

时间:2012-12-31 03:51:18

标签: c++ regex boost unicode c++11

我的IDE是VS 2012,我使用的是C ++ 0x。我想处理一个中文字符串并将一个单词替换为另一个单词,即使该单词被某些特殊符号拆分。我列举了键盘上的所有特殊符号,效果很好。代码是这样的:

std::wstring ws_str = L"性 \t\r\n`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/?爱";
std::wregex wrx(L"性[\\s`~!@#$%^&*()-_=+\\[\\{\\]\\}\\|;:'\",<.>/?]*爱");
std::wstring wfmt(L"革命");
std::locale::global(std::locale("chs"));
std::wstring ws_res = std::regex_replace(ws_str, wrx, wfmt);

但上面的代码有其缺点:我无法枚举键盘上没有的所有符号。还有其他方法可以实现我的目标吗?

1 个答案:

答案 0 :(得分:0)

性(\ W | _)*爱可以解决我的问题,\ W表示排除所有字符(包括中文或其他语言)并在下面添加符号“_”,因此我追加'{{1} }'并满足要求。