Hello, I'm new to boost and I had one question. I'm trying to match strings against regular expressions that are expected to be posix extended regular expressions. But for some reason, the modifier ^ doesn't seem to be working. For example, when I try to match "Manish" against "^[mM]anish.*", I am returned false. 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; } } thanks Manish
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.
participants (2)
-
John Maddock
-
Manish Madan