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