#include #include #include int main(const unsigned long argc, const char** const argv) { std::vector result; const boost::regex needle("(value|default)[^}]*\{"); const std::string haystack = "static value color { 1.0 0.0 0.0 1.0 }"; std::string::const_iterator start = haystack.begin(); const std::string::const_iterator end = haystack.end(); boost::match_results what; unsigned int flags = boost::match_default; while(regex_search(start, end, what, needle, flags)) { result.push_back(what[0].first - haystack.begin()); start = what[0].second; flags |= boost::match_prev_avail; flags |= boost::match_not_bob; } return 0; }