What am I doing wrong?
Here's my short matching function:
bool MatchRegExp(const std::string& matchThis, const std::string& againstThis) { try { const boost::regex e(againstThis);//, boost::regex_constants::icase); return boost::regex_match(matchThis, e, boost::regex_constants::extended); } catch(boost::bad_expression be) { return false; }
}
You're passing the wrong constants in all the wrong places, it should have been: const boost::regex e(againstThis, boost::regex::extended); return boost::regex_match(matchThis, e, boost::match_default); You can omit the match_default flag (since it's the default anyway), and if you wanted case insensitive matching it would have been: const boost::regex e(againstThis, boost::regex::extended | boost::regex::icase); Oh, and don't forget to check the difference between regex_match and regex_search (the match version requires all of the text to match). John.