31 Regular expressions library [re]

31.11 Regular expression algorithms [re.alg]

31.11.4 regex_­replace [re.alg.replace]

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 не ноль, то заменяется только первое найденное совпадение.

Returns: out.

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);

Returns: result.

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);

Returns: result.