Boost C++ regex - how to return all matches -
i have , string "solutionan ananana solutionbn" want return string start solution , end n.
while using regex boost::regex regex("solu(.*)n"); getting output solutionan ananana solutionbn.
while want out solutionan , solutionbn. new regex in boost appreciated. snippet if code using
#include <boost/regex.hpp> #include <iostream> 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; } }
the problem * greedy. change using non-greedy version (note ?):
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; } }
Comments
Post a Comment