2013-03-25 126 views
1

奇怪的是,谷歌拒絕回答這樣一個簡單的問題:
如何使boost :: regexp不區分大小寫?忽略大小寫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 
} 

那麼,是否有另一個不敏感的正則表達式的函數?或另一個正則表達式對象?或者修飾符i可用?

回答

8

可以使用boost::regex::icase選項:

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