Função regex_replace
Substitui com expressões regulares.
template<class OutIt, class BidIt, class RXtraits, class Alloc, class Elem>
OutIt regex_replace(OutIt out,
BidIt first, BidIt last,
const basic_regex<Elem, RXtraits, Alloc>& re,
const basic_string<Elem>& fmt,
match_flag_type flags = match_default);
template<class RXtraits, class Alloc, class Elem>
basic_string<Elem> regex_replace(const basic_string<Elem>& str,
const basic_regex<Elem, RXtraits, Alloc>& re,
const basic_string<Elem>& fmt,
match_flag_type flags = match_default);
Parâmetros
OutIt
O tipo de iterador para substituições.BidIt
O tipo de iterador para submatches.RXtraits
Classe de características para os elementos.Alloc
A classe do alocador de expressão regular.Elem
O tipo de elementos a ser comparado.flags
Sinalizadores para correspondências.first
Início da sequência a ser comparado.fmt
O formato para substituições.last
Término da sequência a ser comparado.out
O iterador de saída.re
A expressão regular para correspondência.str
Cadeia de caracteres para correspondência.
Comentários
A primeira função construirá um objeto iter(first, last, re, flags) de Classe regex_iterator e usá-los para dividir sua intervalo [first, last) de entrada em uma série de subsequences T0M0T1M1...TN-1MN-1TN, onde Mn é a correspondência de nth detectada pelo iterador. Se nenhuma correspondência for encontrada, T0 é o intervalo inteiro de entrada e N é zero. Se (flags & format_first_only) != 0 apenas a primeira correspondência for usado, T1 é qualquer texto de entrada que segue a correspondência, e N é 1. Para cada i no intervalo [0, N), se (flags & format_no_copy) == 0 ele copia o texto no intervalo Ti ao iterador out. Chame m.format(out, fmt, flags), onde m é o objeto de match_results retornado pelo objeto iter de iterador para o subsequência Mi. Finalmente, se (flags & format_no_copy) == 0 ele copia o texto no intervalo TN ao iterador out. A função retorna out.
A segunda função construirá uma variável local result do tipo basic_string<charT> e chama regex_replace(back_inserter(result), str.begin(), str.end(), re, fmt, flags). Retorna result.
Exemplo
// std_tr1__regex__regex_replace.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>
int main()
{
char buf[20];
const char *first = "axayaz";
const char *last = first + strlen(first);
std::regex rx("a");
std::string fmt("A");
std::regex_constants::match_flag_type fonly =
std::regex_constants::format_first_only;
*std::regex_replace(&buf[0], first, last, rx, fmt) = '\0';
std::cout << "replacement == " << &buf[0] << std::endl;
*std::regex_replace(&buf[0], first, last, rx, fmt, fonly) = '\0';
std::cout << "replacement == " << &buf[0] << std::endl;
std::string str("adaeaf");
std::cout << "replacement == "
<< std::regex_replace(str, rx, fmt) << std::endl;
std::cout << "replacement == "
<< std::regex_replace(str, rx, fmt, fonly) << std::endl;
return (0);
}
Requisitos
regex <deCabeçalho: >
Namespace: std