fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <regex>
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8. const std::regex search_regex ("<div class=\"text\">(.+)</div>");
  9. const std::regex replace_regex ("<.+>");
  10. std::smatch m;
  11. std::vector<std::string> quotes;
  12. std::string text("<div class=\"quote\">"
  13. "<div class=\"actions\">"
  14. "<a href=\"/quote/432106/rulez\" class=\"up\" rel=\"nofollow\" onclick=\"v('432106',0,0); return false;\">+</a> <span class=\"rating-o\"><span id=\"v432106\" class=\"rating\">558</span></span> <a href=\"/quote/432106/sux\" class=\"down\" rel=\"nofollow\" onclick=\"v('432106',1,0); return false;\">&ndash;</a>"
  15. "<a href=\"/quote/432106/bayan\" class=\"old\" id=\"vb432106\" rel=\"nofollow\" onclick=\"v('432106',2,0); return false;\">[:||||:]</a> <span class=\"share\" id=\"s432106\"><span class=\"ph\">Поделиться</span><script>new Ya.share({ elementStyle: y1, popupStyle: y2, element: 's432106', link: 'http://b...content-available-to-author-only...h.im/quote/432106', title: 'Цитата #432106' });</script></span> <span class=\"date\">2015-01-27 13:12</span> <a href=\"/quote/432106\" class=\"id\">#432106</a> </div>"
  16. "<div class=\"text\">Второй рабочий день в новом году и в новом офисе. Скорость интернета слабая, спасибо что хоть есть вообще, все сидим через 1 охреневший от нагрузки домашний роутер по вафле, т.к. рабочий загнулся. Еще и работы нет у большинства, т.к. клиенты еще не проснулись.<br><br>ххх: yyy, это у нас настолько низкая скорость, что у меня даже онлайн-радио не тянет?<br>yyy: угу!<br>zzz: Кому что! Тебе - радио через интернет, а я из-за твоего радио второй час стиральную машину выбрать не могу!</div>"
  17. "</div> "
  18. "\n"
  19. "<div class=\"quote\">"
  20. "<div class=\"actions\">"
  21. "<a href=\"/quote/432105/rulez\" class=\"up\" rel=\"nofollow\" onclick=\"v('432105',0,0); return false;\">+</a> <span class=\"rating-o\"><span id=\"v432105\" class=\"rating\">943</span></span> <a href=\"/quote/432105/sux\" class=\"down\" rel=\"nofollow\" onclick=\"v('432105',1,0); return false;\">&ndash;</a>"
  22. "<a href=\"/quote/432105/bayan\" class=\"old\" id=\"vb432105\" rel=\"nofollow\" onclick=\"v('432105',2,0); return false;\">[:||||:]</a> <span class=\"share\" id=\"s432105\"><span class=\"ph\">Поделиться</span><script>new Ya.share({ elementStyle: y1, popupStyle: y2, element: 's432105', link: 'http://b...content-available-to-author-only...h.im/quote/432105', title: 'Цитата #432105' });</script></span> <span class=\"date\">2015-01-27 13:11</span> <a href=\"/quote/432105\" class=\"id\">#432105</a> </div>"
  23. "<div class=\"text\">yyy: Эта кошка аскет какой-то. В её распоряжении домик, здоровенный диван, подоконники с подстилками, а это чудо полосатое из 40 кв.метров квартиры выбрало для лежания тряпку у двери, об которую ноги вытирают (</div>"
  24. "</div> "
  25. "\n"
  26. "<div class=\"quote\">");
  27.  
  28. while (std::regex_search (text, m, search_regex))
  29. {
  30. quotes.push_back(std::regex_replace(std::string(m[1]), replace_regex, " "));
  31. text = m.suffix().str();
  32. }
  33.  
  34. std::cout << "Found " << quotes.size() << " matches:" << std::endl << std::endl;
  35.  
  36. for(auto quote: quotes)
  37. std::cout << quote << std::endl << std::endl;
  38. }
Success #stdin #stdout 0s 3436KB
stdin
Standard input is empty
stdout
Found 2 matches:

Второй рабочий день в новом году и в новом офисе. Скорость интернета слабая, спасибо что хоть есть вообще, все сидим через 1 охреневший от нагрузки домашний роутер по вафле, т.к. рабочий загнулся. Еще и работы нет у большинства, т.к. клиенты еще не проснулись. 

yyy: Эта кошка аскет какой-то. В её распоряжении домик, здоровенный диван, подоконники с подстилками, а это чудо полосатое из 40 кв.метров квартиры выбрало для лежания тряпку у двери, об которую ноги вытирают (