std::regex_replace
Определено в заголовке <regex> |
||
|---|---|---|
template< class OutputIt, class BidirIt,
class Traits, class CharT,
class STraits, class SAlloc >
OutputIt regex_replace( OutputIt out, BidirIt first, BidirIt last,
const std::basic_regex<CharT,Traits>& re,
const std::basic_string<CharT,STraits,SAlloc>& fmt,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
|
(1) | (с C++11) |
template< class OutputIt, class BidirIt,
class Traits, class CharT >
OutputIt regex_replace( OutputIt out, BidirIt first, BidirIt last,
const std::basic_regex<CharT,Traits>& re,
const CharT* fmt,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
|
(2) | (с C++11) |
template< class Traits, class CharT,
class STraits, class SAlloc,
class FTraits, class FAlloc >
std::basic_string<CharT,STraits,SAlloc>
regex_replace( const std::basic_string<CharT,STraits,SAlloc>& s,
const std::basic_regex<CharT,Traits>& re,
const std::basic_string<CharT,FTraits,FAlloc>& fmt,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
|
(3) | (с C++11) |
template< class Traits, class CharT,
class STraits, class SAlloc >
std::basic_string<CharT,STraits,SAlloc>
regex_replace( const std::basic_string<CharT,STraits,SAlloc>& s,
const std::basic_regex<CharT,Traits>& re,
const CharT* fmt,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
|
(4) | (с C++11) |
template< class Traits, class CharT,
class STraits, class SAlloc >
std::basic_string<CharT>
regex_replace( const CharT* s,
const std::basic_regex<CharT,Traits>& re,
const std::basic_string<CharT,STraits,SAlloc>& fmt,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
|
(5) | (с C++11) |
template< class Traits, class CharT >
std::basic_string<CharT>
regex_replace( const CharT* s,
const std::basic_regex<CharT,Traits>& re,
const CharT* fmt,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
|
(6) | (с C++11) |
regex_replace использует регулярное выражение для выполнения подстановки в последовательности символов:
1) Копирует символы в диапазоне
[first, last) до out, заменяя любые последовательности, соответствующие re на символы, отформатированные по fmt. Другими словами:- Создает объект
std::regex_iteratoriтак, как если бы это было сделаноstd::regex_iterator<BidirIt, CharT, traits> i(first, last, re, flags), и использует его для прохода по каждому совпадениюreв последовательности[first,last). - Для каждого такого совпадения
m, копирует несовпадающую подпоследовательность (m.prefix()) вoutкак если бы это было сделаноout = std::copy(m.prefix().first, m.prefix().second, out), а затем заменяет совпадающую подпоследовательность отформатированной строкой замены, как если бы это было сделано вызовомout = m.format(out, fmt, flags). - Когда больше нет совпадений, копирует оставшиеся несовпадающие символы в
outкак если бы это было сделаноout = std::copy(last_m.suffix().first, last_m.suffix().second, out), гдеlast_m— копия последнего найденного совпадения. - Если совпадений нет, копирует всю последовательность в
outкак есть, используяout = std::copy(first, last, out). - Если
flagsсодержитstd::regex_constants::format_no_copy, несовпадающие подпоследовательности не копируются вout. - Если
flagsсодержитstd::regex_constants::format_first_only, заменяется только первое совпадение.
2) То же, что и (1), но отформатированная замена выполняется как если бы это было сделано вызовом
out = m.format(out, fmt, fmt + char_traits<CharT>::length(fmt), flags).
3,4) Создает пустую строку
result типа std::basic_string<CharT, ST, SA> и вызывает std::regex_replace(std::back_inserter(result), s.begin(), s.end(), re, fmt, flags).
5,6) Создает пустую строку
result типа std::basic_string<CharT> и вызывает std::regex_replace(std::back_inserter(result), s, s + std::char_traits<CharT>::length(s), re, fmt, flags).Параметры
| first, last | - | входная последовательность символов, представленная парой итераторов |
| s | - | входная последовательность символов, представленная std::basic_string или массивом символов |
| re | - | регулярное std::basic_regex, которое будет сопоставлено с входной последовательностью |
| fmt | - | строка формата замены регулярного выражения, точный синтаксис зависит от значения flags |
| flags | - | флаги соответствия типа std::regex_constants::match_flag_type |
| out | - | итератор вывода для хранения результата замены |
| Требования к типу | ||
-OutputIt должно удовлетворять требованиям LegacyOutputIterator. |
||
-BidirIt должно удовлетворять требованиям LegacyBidirectionalIterator. |
||
Возвращаемое значение
1,2) Возвращает копию итератора вывода
out после всех вставок.
3-6) Возвращает строку
result, содержащую вывод.Исключения
Может выбросить std::regex_error для обозначения условия ошибки.
Пример
#include <iostream>
#include <iterator>
#include <regex>
#include <string>
int main()
{
std::string text = "Quick brown fox";
std::regex vowel_re("a|e|i|o|u");
// write the results to an output iterator
std::regex_replace(std::ostreambuf_iterator<char>(std::cout),
text.begin(), text.end(), vowel_re, "*");
// construct a string holding the results
std::cout << '\n' << std::regex_replace(text, vowel_re, "[$&]") << '\n';
}Вывод:
Q**ck br*wn f*x Q[u][i]ck br[o]wn f[o]x
См. также
|
(C++11) |
попытка сопоставить регулярное выражение с любой частью последовательности символов (функция-шаблон) |
|
(C++11) |
опции, специфичные для сопоставления (тип) |
| заменяет указанную часть строки (публичный член-функция std::basic_string<CharT,Traits,Allocator>) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/regex/regex_replace