
kiran wrote:
Why is the second one not picked ? This was my question.
It is picked for me: I modified your sample program (see below) so that it actually compiled, and didn't reply on external files, and I see exactly the output expected: everything from the first "Resurfacing" to the last "home". #include "boost/regex.hpp" using namespace boost; using namespace std; #include<fcntl.h> #include<sys/types.h> #include <iostream> int main() { char buf[10000]; //int fd = open("glass.htm", O_RDONLY); //int size = read(fd, buf, 10000); string line = "<!-- saved from url=(0022)http://internet.e-mail -->\n" "<html><head>\n" "<title>UGlassIt Fibre-Shelkote Pool Resurfacing for Swimming Pools</title>\n" "<meta name=\"robots\" content=\"index,follow\">Home\n" "<meta name=\"keywords\" content=\"pool Resurfacing,uglassit,fibre-shelkote,Uglassit,Fibre-shelkote,swimming pool resurfacing\">Home"; //close(fd); regex expr("Resurfacing(.|\n)*Home" , boost::regex::icase | boost::regex::perl); try { sregex_iterator itr(line.begin(), line.end(), expr, boost::match_not_dot_newline); sregex_iterator i; while(itr != i) { cout<<string((*itr)[0].first, (*itr)[0].second)<<" "<<(*itr).position(0)<<endl; itr++; } } catch(std::runtime_error e) { cout<<e.what()<<endl<<flush; } }