template <class OutputIterator, class BidirectionalIterator,
class traits, class charT, class ST, class SA>
OutputIterator
regex_replace(OutputIterator out,
BidirectionalIterator first, BidirectionalIterator last,
const basic_regex<charT, traits>& e,
const basic_string<charT, ST, SA>& fmt,
regex_constants::match_flag_type flags = regex_constants::match_default);
template <class OutputIterator, class BidirectionalIterator, class traits, class charT>
OutputIterator
regex_replace(OutputIterator out,
BidirectionalIterator first, BidirectionalIterator last,
const basic_regex<charT, traits>& e,
const charT* fmt,
regex_constants::match_flag_type flags = regex_constants::match_default);
Effects: Создает regex_iterator объект, i как если бы
regex_iterator<BidirectionalIterator, charT, traits> i(first, last, e, flags)
и используется i для перечисления всех совпадений m типа match_results<BidirectionalIterator> , встречающихся в последовательности [first, last). Если таких совпадений не найдено и !(flags & regex_constants::format_no_copy), то вызывает
out = copy(first, last, out)
Если какие-либо совпадения найдены, то для каждого такого совпадения:
Если !(flags & regex_constants::format_no_copy)звонит
out = copy(m.prefix().first, m.prefix().second, out)
Затем звонит
out = m.format(out, fmt, flags)
для первой формы функции и
out = m.format(out, fmt, fmt + char_traits<charT>::length(fmt), flags)
для второго.
Наконец, если такое совпадение найдено и !(flags & regex_constants::format_no_copy)вызывается
out = copy(last_m.suffix().first, last_m.suffix().second, out)
где last_m копия последнего найденного совпадения. Если flags & regex_constants::format_first_only не ноль, то заменяется только первое найденное совпадение.
template <class traits, class charT, class ST, class SA, class FST, class FSA>
basic_string<charT, ST, SA>
regex_replace(const basic_string<charT, ST, SA>& s,
const basic_regex<charT, traits>& e,
const basic_string<charT, FST, FSA>& fmt,
regex_constants::match_flag_type flags = regex_constants::match_default);
template <class traits, class charT, class ST, class SA>
basic_string<charT, ST, SA>
regex_replace(const basic_string<charT, ST, SA>& s,
const basic_regex<charT, traits>& e,
const charT* fmt,
regex_constants::match_flag_type flags = regex_constants::match_default);
Effects: Создает пустую строку result типа basic_string<charT, ST, SA> и вызывает:
regex_replace(back_inserter(result), s.begin(), s.end(), e, fmt, flags);
template <class traits, class charT, class ST, class SA>
basic_string<charT>
regex_replace(const charT* s,
const basic_regex<charT, traits>& e,
const basic_string<charT, ST, SA>& fmt,
regex_constants::match_flag_type flags = regex_constants::match_default);
template <class traits, class charT>
basic_string<charT>
regex_replace(const charT* s,
const basic_regex<charT, traits>& e,
const charT* fmt,
regex_constants::match_flag_type flags = regex_constants::match_default);
Effects: Создает пустую строку result типа basic_string<charT> и вызывает:
regex_replace(back_inserter(result), s, s + char_traits<charT>::length(s), e, fmt, flags);