#include <iostream>
#include <string>
#include <vector>
#include <regex>
int main( int argc, char * argv[ ] )
{
const std:: regex search_regex ( "<div class=\" text\" >(.+)</div>" ) ;
const std:: regex replace_regex ( "<.+>" ) ;
std:: smatch m;
std:: vector < std:: string > quotes;
std:: string text( "<div class=\" quote\" >"
"<div class=\" actions\" >"
"<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;\" >–</a>"
"<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>"
"<div class=\" text\" >Второй рабочий день в новом году и в новом офисе. Скорость интернета слабая, спасибо что хоть есть вообще, все сидим через 1 охреневший от нагрузки домашний роутер по вафле, т.к. рабочий загнулся. Еще и работы нет у большинства, т.к. клиенты еще не проснулись.<br><br>ххх: yyy, это у нас настолько низкая скорость, что у меня даже онлайн-радио не тянет?<br>yyy: угу!<br>zzz: Кому что! Тебе - радио через интернет, а я из-за твоего радио второй час стиральную машину выбрать не могу!</div>"
"</div> "
"\n "
"<div class=\" quote\" >"
"<div class=\" actions\" >"
"<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;\" >–</a>"
"<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>"
"<div class=\" text\" >yyy: Эта кошка аскет какой-то. В её распоряжении домик, здоровенный диван, подоконники с подстилками, а это чудо полосатое из 40 кв.метров квартиры выбрало для лежания тряпку у двери, об которую ноги вытирают (</div>"
"</div> "
"\n "
"<div class=\" quote\" >" ) ;
while ( std:: regex_search ( text, m, search_regex) )
{
quotes.push_back ( std:: regex_replace ( std:: string ( m[ 1 ] ) , replace_regex, " " ) ) ;
text = m.suffix ( ) .str ( ) ;
}
std:: cout << "Found " << quotes.size ( ) << " matches:" << std:: endl << std:: endl ;
for ( auto quote: quotes)
std:: cout << quote << std:: endl << std:: endl ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cmVnZXg+CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CiAgICBjb25zdCBzdGQ6OnJlZ2V4IHNlYXJjaF9yZWdleCAoIjxkaXYgY2xhc3M9XCJ0ZXh0XCI+KC4rKTwvZGl2PiIpOwogICAgY29uc3Qgc3RkOjpyZWdleCByZXBsYWNlX3JlZ2V4ICgiPC4rPiIpOwogICAgc3RkOjpzbWF0Y2ggbTsKICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBxdW90ZXM7CiAgICBzdGQ6OnN0cmluZyB0ZXh0KCI8ZGl2IGNsYXNzPVwicXVvdGVcIj4iCiI8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPiIKIjxhIGhyZWY9XCIvcXVvdGUvNDMyMTA2L3J1bGV6XCIgY2xhc3M9XCJ1cFwiIHJlbD1cIm5vZm9sbG93XCIgb25jbGljaz1cInYoJzQzMjEwNicsMCwwKTsgcmV0dXJuIGZhbHNlO1wiPis8L2E+CTxzcGFuIGNsYXNzPVwicmF0aW5nLW9cIj48c3BhbiBpZD1cInY0MzIxMDZcIiBjbGFzcz1cInJhdGluZ1wiPjU1ODwvc3Bhbj48L3NwYW4+CTxhIGhyZWY9XCIvcXVvdGUvNDMyMTA2L3N1eFwiIGNsYXNzPVwiZG93blwiIHJlbD1cIm5vZm9sbG93XCIgb25jbGljaz1cInYoJzQzMjEwNicsMSwwKTsgcmV0dXJuIGZhbHNlO1wiPiZuZGFzaDs8L2E+IgoiPGEgaHJlZj1cIi9xdW90ZS80MzIxMDYvYmF5YW5cIiBjbGFzcz1cIm9sZFwiIGlkPVwidmI0MzIxMDZcIiByZWw9XCJub2ZvbGxvd1wiIG9uY2xpY2s9XCJ2KCc0MzIxMDYnLDIsMCk7IHJldHVybiBmYWxzZTtcIj5bOnx8fHw6XTwvYT4JPHNwYW4gY2xhc3M9XCJzaGFyZVwiIGlkPVwiczQzMjEwNlwiPjxzcGFuIGNsYXNzPVwicGhcIj7Qn9C+0LTQtdC70LjRgtGM0YHRjzwvc3Bhbj48c2NyaXB0Pm5ldyBZYS5zaGFyZSh7IGVsZW1lbnRTdHlsZTogeTEsIHBvcHVwU3R5bGU6IHkyLCBlbGVtZW50OiAnczQzMjEwNicsIGxpbms6ICdodHRwOi8vYi4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uaC5pbS9xdW90ZS80MzIxMDYnLCB0aXRsZTogJ9Cm0LjRgtCw0YLQsCAjNDMyMTA2JyB9KTs8L3NjcmlwdD48L3NwYW4+CTxzcGFuIGNsYXNzPVwiZGF0ZVwiPjIwMTUtMDEtMjcgMTM6MTI8L3NwYW4+IDxhIGhyZWY9XCIvcXVvdGUvNDMyMTA2XCIgY2xhc3M9XCJpZFwiPiM0MzIxMDY8L2E+CTwvZGl2PiIKIjxkaXYgY2xhc3M9XCJ0ZXh0XCI+0JLRgtC+0YDQvtC5INGA0LDQsdC+0YfQuNC5INC00LXQvdGMINCyINC90L7QstC+0Lwg0LPQvtC00YMg0Lgg0LIg0L3QvtCy0L7QvCDQvtGE0LjRgdC1LiDQodC60L7RgNC+0YHRgtGMINC40L3RgtC10YDQvdC10YLQsCDRgdC70LDQsdCw0Y8sINGB0L/QsNGB0LjQsdC+INGH0YLQviDRhdC+0YLRjCDQtdGB0YLRjCDQstC+0L7QsdGJ0LUsINCy0YHQtSDRgdC40LTQuNC8INGH0LXRgNC10LcgMSDQvtGF0YDQtdC90LXQstGI0LjQuSDQvtGCINC90LDQs9GA0YPQt9C60Lgg0LTQvtC80LDRiNC90LjQuSDRgNC+0YPRgtC10YAg0L/QviDQstCw0YTQu9C1LCDRgi7Qui4g0YDQsNCx0L7Rh9C40Lkg0LfQsNCz0L3Rg9C70YHRjy4g0JXRidC1INC4INGA0LDQsdC+0YLRiyDQvdC10YIg0YMg0LHQvtC70YzRiNC40L3RgdGC0LLQsCwg0YIu0LouINC60LvQuNC10L3RgtGLINC10YnQtSDQvdC1INC/0YDQvtGB0L3Rg9C70LjRgdGMLjxicj48YnI+0YXRhdGFOiB5eXksINGN0YLQviDRgyDQvdCw0YEg0L3QsNGB0YLQvtC70YzQutC+INC90LjQt9C60LDRjyDRgdC60L7RgNC+0YHRgtGMLCDRh9GC0L4g0YMg0LzQtdC90Y8g0LTQsNC20LUg0L7QvdC70LDQudC9LdGA0LDQtNC40L4g0L3QtSDRgtGP0L3QtdGCPzxicj55eXk6INGD0LPRgyE8YnI+enp6OiDQmtC+0LzRgyDRh9GC0L4hINCi0LXQsdC1IC0g0YDQsNC00LjQviDRh9C10YDQtdC3INC40L3RgtC10YDQvdC10YIsINCwINGPINC40Lct0LfQsCDRgtCy0L7QtdCz0L4g0YDQsNC00LjQviDQstGC0L7RgNC+0Lkg0YfQsNGBINGB0YLQuNGA0LDQu9GM0L3Rg9GOINC80LDRiNC40L3RgyDQstGL0LHRgNCw0YLRjCDQvdC1INC80L7Qs9GDITwvZGl2PiIKIjwvZGl2PgkiCiJcbiIKIjxkaXYgY2xhc3M9XCJxdW90ZVwiPiIKIjxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+IgoiPGEgaHJlZj1cIi9xdW90ZS80MzIxMDUvcnVsZXpcIiBjbGFzcz1cInVwXCIgcmVsPVwibm9mb2xsb3dcIiBvbmNsaWNrPVwidignNDMyMTA1JywwLDApOyByZXR1cm4gZmFsc2U7XCI+KzwvYT4JPHNwYW4gY2xhc3M9XCJyYXRpbmctb1wiPjxzcGFuIGlkPVwidjQzMjEwNVwiIGNsYXNzPVwicmF0aW5nXCI+OTQzPC9zcGFuPjwvc3Bhbj4JPGEgaHJlZj1cIi9xdW90ZS80MzIxMDUvc3V4XCIgY2xhc3M9XCJkb3duXCIgcmVsPVwibm9mb2xsb3dcIiBvbmNsaWNrPVwidignNDMyMTA1JywxLDApOyByZXR1cm4gZmFsc2U7XCI+Jm5kYXNoOzwvYT4iCiI8YSBocmVmPVwiL3F1b3RlLzQzMjEwNS9iYXlhblwiIGNsYXNzPVwib2xkXCIgaWQ9XCJ2YjQzMjEwNVwiIHJlbD1cIm5vZm9sbG93XCIgb25jbGljaz1cInYoJzQzMjEwNScsMiwwKTsgcmV0dXJuIGZhbHNlO1wiPls6fHx8fDpdPC9hPgk8c3BhbiBjbGFzcz1cInNoYXJlXCIgaWQ9XCJzNDMyMTA1XCI+PHNwYW4gY2xhc3M9XCJwaFwiPtCf0L7QtNC10LvQuNGC0YzRgdGPPC9zcGFuPjxzY3JpcHQ+bmV3IFlhLnNoYXJlKHsgZWxlbWVudFN0eWxlOiB5MSwgcG9wdXBTdHlsZTogeTIsIGVsZW1lbnQ6ICdzNDMyMTA1JywgbGluazogJ2h0dHA6Ly9iLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5oLmltL3F1b3RlLzQzMjEwNScsIHRpdGxlOiAn0KbQuNGC0LDRgtCwICM0MzIxMDUnIH0pOzwvc2NyaXB0Pjwvc3Bhbj4JPHNwYW4gY2xhc3M9XCJkYXRlXCI+MjAxNS0wMS0yNyAxMzoxMTwvc3Bhbj4gPGEgaHJlZj1cIi9xdW90ZS80MzIxMDVcIiBjbGFzcz1cImlkXCI+IzQzMjEwNTwvYT4JPC9kaXY+IgoiPGRpdiBjbGFzcz1cInRleHRcIj55eXk6INCt0YLQsCDQutC+0YjQutCwINCw0YHQutC10YIg0LrQsNC60L7QuS3RgtC+LiDQkiDQtdGRINGA0LDRgdC/0L7RgNGP0LbQtdC90LjQuCDQtNC+0LzQuNC6LCDQt9C00L7RgNC+0LLQtdC90L3Ri9C5INC00LjQstCw0L0sINC/0L7QtNC+0LrQvtC90L3QuNC60Lgg0YEg0L/QvtC00YHRgtC40LvQutCw0LzQuCwg0LAg0Y3RgtC+INGH0YPQtNC+INC/0L7Qu9C+0YHQsNGC0L7QtSDQuNC3IDQwINC60LIu0LzQtdGC0YDQvtCyINC60LLQsNGA0YLQuNGA0Ysg0LLRi9Cx0YDQsNC70L4g0LTQu9GPINC70LXQttCw0L3QuNGPINGC0YDRj9C/0LrRgyDRgyDQtNCy0LXRgNC4LCDQvtCxINC60L7RgtC+0YDRg9GOINC90L7Qs9C4INCy0YvRgtC40YDQsNGO0YIgKDwvZGl2PiIKIjwvZGl2PgkiCiJcbiIKIjxkaXYgY2xhc3M9XCJxdW90ZVwiPiIpOwoKICAgIHdoaWxlIChzdGQ6OnJlZ2V4X3NlYXJjaCAodGV4dCwgbSwgc2VhcmNoX3JlZ2V4KSkKICAgIHsKICAgICAgICBxdW90ZXMucHVzaF9iYWNrKHN0ZDo6cmVnZXhfcmVwbGFjZShzdGQ6OnN0cmluZyhtWzFdKSwgcmVwbGFjZV9yZWdleCwgIiAiKSk7CiAgICAgICAgdGV4dCA9IG0uc3VmZml4KCkuc3RyKCk7CiAgICB9CgogICAgc3RkOjpjb3V0IDw8ICJGb3VuZCAiIDw8IHF1b3Rlcy5zaXplKCkgPDwgIiBtYXRjaGVzOiIgPDwgc3RkOjplbmRsIDw8IHN0ZDo6ZW5kbDsKCiAgICBmb3IoYXV0byBxdW90ZTogcXVvdGVzKQogICAgICAgIHN0ZDo6Y291dCA8PCBxdW90ZSA8PCBzdGQ6OmVuZGwgPDwgc3RkOjplbmRsOwp9