我需要正则表达式从字符串中搜索特定的中文模式C++ 例如,我有一个源字符串"什么手机好"和一个模式"什么(.*)好">
我使用 boost::regex_search 和 wstring 来执行此操作,但有问题 当搜索字符串有英文或数字时,代码不起作用,例如,源字符串是"abc什么efg手机好"模式是"什么(.*)好",代码做ACT2。而源字符串是"(空字符串)模式是"什么(.*)好",代码做ACT1
我想知道如何解决它。
函数
std::wstring string2wstring(const std::string& s) {
setlocale(LC_CTYPE, "");
int iWLen = std::mbstowcs(NULL, s.c_str(), s.length());
wchar_t *lpwsz= new wchar_t[iWLen + 1];
std::mbstowcs(lpwsz, s.c_str(), s.length());
std::wstring wstrResult(lpwsz);
delete []lpwsz;
return wstrResult;
}
std::wstring ws = string2wstring(s);
boost::wregex wpattern(string2wstring(pattern));
if (boost::regex_search(ws, wpattern) == true) {
do ACT1;
} else {
do ACT2;
}
很尴尬的是,我不需要使用 wstring 来处理中文正则表达式。
只需制作查询和模式 gbk 字符串就可以修复它。
boost::regex_search(query,pattern)