c++ - C++ 正则表达式搜索特定的中文模式
问题描述
我需要从 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-string 即可修复它。
boost::regex_search(query,pattern)
推荐阅读
- javascript - 如何正确设置numFmt使用exceljs
- python-3.x - 图例覆盖的图例 - matplotlib
- ios - Gigya Swift 框架缺少 ios-framework-build.sh 脚本
- wso2 - WSO2 Datamapper 文件资源链接丢失
- ionic-framework - 在 setFocus() ionic 4 之后输入失去自动大写
- c - 编写一个程序,在单独的行中接受输入并计算 C 中的总和
- python - 索引numpy数组时的不同形状
- c# - ASP.NET WebApi 属性路由获取控制器名称
- html - 如何使这个 CSS 网格与 justify-content 一起工作?
- mysql - MySQL如何重复查询列中的每个值