boost::regex_replace кто-нибудь юзал?

migel

как-то у них очень фигово и неподробно описана в документации эта часть (не в пример остальным =( )
неохото долго над этим голову ломать. - мне нужно-то всего заменить по шаблону "re1(aaa)re2" заменить ааа на bbb.
Может кто использовал - запостите плиз кусок кода с ней, или подскажите как сделать замену описанную выше.

evgen5555

#pragma comment(lib, "libboost_regex-vc7-s-1_33_1.lib")
#define BOOST_LIB_TOOLSET "vc7"
#include <string>
#include <iterator>
#include <boost/regex.hpp>
#include <iostream>

int main
{
std::string str = "Life is full of happiness\n";
boost::regex expr;
expr.assign("(happiness)|\\r");
std::string fmt;
fmt = "(shit)";
std::list<std::string>::iterator it;
std::ostream_iterator<char> out(std::cout);
boost::regex_replace(out, str.begin str.end expr, fmt, boost::match_default | boost::format_all);
std::cin >> str;
}

migel

вау!
спасибо
сейчас я над этим поразмышляю..

migel

ок, понял.
только что значит в "(happiness)|\\r" сочетание "|\\r"?
--
вопрос:
а если я хочу заменить такой текст:
"Life is full of happiness. Life is full of happinessA. Life is full of happinessB. ..."
и каждое счастье заменить на свое, то что для этого надо?
replace по циклу, сдвигая при этом итератор и снять флаг format_all, да?

evgen5555

expr = "(типа)|(вот так вот)|\\r";
fmt = "(все заменяетсяфигней)";

- модификатор для match regex

migel

опять не понял
это ответ на сколько из моих вопросов?

evgen5555

Зачем что-то вообще сдвигать?
Подаёшь строчку, итератор, и всё.
Оставить комментарий
Имя или ник:
Комментарий: