fork download
  1. #include <iostream>
  2. #include <regex>
  3. #include <string>
  4. int main()
  5. {
  6. std::string str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut suscipit enim. Praesent varius purus ac sem vulputate pulvinar. Mauris scelerisque arcu tortor, at bibendum dui rhoncus ut. Nunc dictum malesuada condimentum. Mauris ornare nunc eget efficitur tempor. Morbi ex nibh, consectetur vitae bibendum id, bibendum varius purus. Proin finibus quam vel ornare molestie. Mauris condimentum nisi efficitur, fringilla massa ut, commodo diam. Mauris lobortis laoreet magna sed commodo. Donec faucibus lectus placerat ex pulvinar interdum.";
  7. std::regex rgx("([^;]|'[^']*')*", std::regex_constants::extended | std::regex_constants::nosubs);
  8. std::smatch cm;
  9. std::regex_match(str, cm, rgx ); // no overflow here
  10. //std::regex_match(std::begin(str), std::end(str), cm, rgx); // Stack overflow!
  11. for (int i=0; i<cm.size(); i++)
  12. std::cout<<"Found: "<<cm[i]<<std::endl;
  13. std::cin.get();
  14. return 0;
  15. }
Success #stdin #stdout 0s 3372KB
stdin
Standard input is empty
stdout
Found: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut suscipit enim. Praesent varius purus ac sem vulputate pulvinar. Mauris scelerisque arcu tortor, at bibendum dui rhoncus ut. Nunc dictum malesuada condimentum. Mauris ornare nunc eget efficitur tempor. Morbi ex nibh, consectetur vitae bibendum id, bibendum varius purus. Proin finibus quam vel ornare molestie. Mauris condimentum nisi efficitur, fringilla massa ut, commodo diam. Mauris lobortis laoreet magna sed commodo. Donec faucibus lectus placerat ex pulvinar interdum.