Boost C ++ regex – cómo devolver todas las coincidencias

Tengo y una cadena "SolutionAN ANANANA SolutionBN" Quiero devolver todas las cadenas que comienzan con Solution y terminan con N

Mientras usa regex boost::regex regex("Solu(.*)N"); Estoy obteniendo salida como SolutionAN ANANANA SolutionBN .

Mientras quiero salir como SolutionAN y SolutionBN . Soy nuevo en el regex en impulsar cualquier ayuda será apreciada. Fragmento de código si estoy usando

 #include  #include  int main(int ac,char* av[]) { std::string strTotal("SolutionAN ANANANA SolutionBN"); boost::regex regex("Solu(.*)N"); boost::sregex_token_iterator iter(strTotal.begin(), strTotal.end(), regex, 0); boost::sregex_token_iterator end; for( ; iter != end; ++iter ) { std::cout<<*iter<<std::endl; } } 

El problema es que * es codicioso. Cambie a usar la versión no codiciosa (note el ? ):

 int main(int ac,char* av[]) { std::string strTotal("SolutionAN ANANANA SolutionBN"); boost::regex regex("Solu(.*?)N"); boost::sregex_token_iterator iter(strTotal.begin(), strTotal.end(), regex, 0); boost::sregex_token_iterator end; for( ; iter != end; ++iter ) { std::cout<<*iter<