#include #include #include // Boost.Regex lib using namespace std; int main( ) { std::string s,sre; //regular expression with [:xdigit:] sre="a[[[:xdigit:]]x]z"; s="afzaxz"; boost::regex re; //re.assign(sre, boost::regex_constants::icase); re.assign(sre, boost::regex_constants::perl | boost::regex_constants::icase); std::string::const_iterator start, end; start = s.begin(); end = s.end(); boost::match_results what; boost::match_flag_type flags = boost::match_default; while(regex_search(start, end, what, re, flags) && (start != end)) { cout << "Searching in string" << std::string(start,end) << endl; cout << "Found Pattern:start:" << std::string(what[0].first, what[0].second) << ":end:\nPattern starts at :" << what[0].first - s.begin() << "\nPattern ends at: " << (what[0].second - 1) - s.begin() << "\nPattern length:" << what[0].length() << endl; flags |= boost::match_prev_avail; flags |= boost::match_not_bob; start++; } }