使用boost :: regex忽略大小写

时间:2013-03-25 16:16:39

标签: c++ case-insensitive boost-regex

奇怪的是,谷歌拒绝回答这么简单的问题:
如何使boost :: regexp不区分大小写?

这就是我所拥有的:

static const boost::regex bad_words("(?:^|.* )(f(?:uc|a)k(?:i[ng]{1,2})?|bitch(?:es|iz)?)(?:$| .*)");   //reduced to the english ones

当然,我也希望过滤大写的坏词。这就是我匹配它们的方式:

//std::string ms; - chat messsage
//boost::match_results<std::string::const_iterator> results;  - prewious regexp results
else if(boost::regex_match(ms, results2, bad_words)) {   //
        std::stringstream msg;
        msg<<"Avoid bad words! Word '"<<results2[1]<<"' is banned!";
        this->whisper(results[1], msg.str());   //name, message
}

那么,对于不敏感的regexp还有另一个函数吗?还是另一个正则表达式对象?或者修饰符i可用吗?

1 个答案:

答案 0 :(得分:12)

您可以使用boost::regex::icase选项:

static const boost::regex bad_words("...your regex...", boost::regex::icase);