3

不思議なことに、グーグルはそのような単純な質問に答えることを拒否します:
どうすれば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が利用可能ですか?

4

1 に答える 1

14

boost::regex::icase次のオプションを使用できます。

static const boost::regex bad_words("...your regex...", boost::regex::icase);
于 2013-03-25T16:33:00.093 に答える