读书人

boost正则表达式

发布时间: 2012-06-16 20:34:32 作者: rapoo

boost正则表达式求助
想写个判断字符串的正则表达式:中文、英文字母、下划线的组合,用的是c++,boost的正则表达式库。那边厢java写的

Java code
String name_pt = "^[A-Za-z0-9_\u4e00-\u9fa5]+$";
可以正确判断,但boost就说不匹配
C/C++ code
std::string name_pt = "^[A-Za-z0-9_\u4e00-\u9fa5]+$";//英文字母、数字、下划线组合std::string userName = std::string(this->et_userName->GetValue().mb_str());bool flag = boost::regex_match(userName, name_exp)

flag总为false。正确的字符串例如:用户名、用户名_、用户名_adc。请问是不是编码问题呢?我一直在怀疑这个,因为我用了几个正则表达式的测试器,都是匹配的。

[解决办法]
处理中文得用宽字符版本吧。

读书人网 >C++

热点推荐