美文网首页成长、财富白话C++编程
在线使用boost::regex匹配中文和英文

在线使用boost::regex匹配中文和英文

作者: 小宁静致远 | 来源:发表于2019-01-06 21:29 被阅读19次

这两天做一个全球化的脏话过滤功能, 因此想到使用正则表达式.

我们使用的工作编译环境为gcc4.8.5, 和boost1.61, 以自己以前使用boost::regex的经验并google的结果发现gcc对boost::regex的支持至少要到gcc4.8.1.

如果选用C++11的regex, 则需要gcc的版本为>4.9.0gcc4.9.0...regex-match

同时, 除了中文, 可能还会有其它的宽字符语言, 比如日语,越南语,韩语==, 其实这个是个将自己引出歧途浪费好多时间的认知, 因为花了好多时间去了解Unicode和宽字节...

还好今天用在线的编译工具测试中文和越南语匹配成功, 我想接下来我只要大概修改我的代码问题就会解决!

另外花多时间的地方是把问题想的过于复杂, 从一开始就不应该分什么宽字符和窄字符, 并应该先用在线的编译器先行实验测试数据, 如果算法合适, 再在自己的项目中使用, 以避免大量的时间浪费在了巨大的C++编译时间上和算法本身的调试上.

最终的测试代码如下:

#include <iostream>
#include <string>
#include <boost/regex.hpp>
using namespace  std;
using namespace boost;

int main()
{   
    string str = "今天是个好日子圣达菲阿斯qweermao đông";
    std::cout << str << std::endl;
    boost::regex pattern("(好|qwee|今天|mao đông)");
    boost::sregex_token_iterator end;  //需要注意一下这里
    for (boost::sregex_token_iterator j(str.begin(), str.end(), pattern); j != end; ++j){
        cout << *j << ",";
    }

    return 0;
}
boost::regex 匹配中英文和越南语

相关文章

网友评论

    本文标题:在线使用boost::regex匹配中文和英文

    本文链接:https://www.haomeiwen.com/subject/bqjerqtx.html