Compartilhar via


Função regex_replace

Substitui corresponde a 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 de substituições.

  • BidIt
    O tipo de iterador para subcorrespondentes.

  • RXtraits
    Classe de características de elementos.

  • Alloc
    A classe do alocador de expressão regular.

  • Elem
    O tipo de elementos para coincidir.

  • flags
    Sinalizadores de correspondências.

  • first
    Início da sequência para fazer a correspondência.

  • fmt
    O formato de substituições.

  • last
    participante da sequência para fazer a correspondência.

  • out
    O iterador de saída.

  • re
    A expressão regular para corresponder.

  • str
    Seqüência de caracteres para fazer a correspondência.

Comentários

A primeira função constrói um Classe regex_iterator objeto iter(first, last, re, flags) e o utiliza para dividir seu intervalo de entrada [first, last) em uma série de subseqüências T0M0T1M1...TN-1MN-1TN, onde Mn é o nth correspondência detectada pelo iterador. Se nenhuma correspondência for encontrada, T0 é todo o intervalo de entrada e N é zero. If (flags & format_first_only) != 0 somente a primeira correspondência é usada, T1 é todo o texto de entrada que segue o correspondente, e N é 1. Para cada i no intervalo [0, N), se (flags & format_no_copy) == 0 Ele copia o texto no intervalo Ti para o iterador out. Em seguida, ele chama m.format(out, fmt, flags), onde m é o match_results objeto retornado pelo objeto do iterador iter para o subsequence Mi. Finalmente, se (flags & format_no_copy) == 0 Ele copia o texto no intervalo TN para o iterador out. A função retornará out.

A segunda função constrói uma variável local result do tipo basic_string<charT> e chamadas regex_replace(back_inserter(result), str.begin(), str.end(), re, fmt, flags). Ela retornará 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::tr1::regex rx("a"); 
    std::string fmt("A"); 
    std::tr1::regex_constants::match_flag_type fonly = 
        std::tr1::regex_constants::format_first_only; 
 
    *std::tr1::regex_replace(&buf[0], first, last, rx, fmt) = '\0'; 
    std::cout << "replacement == " << &buf[0] << std::endl; 
 
    *std::tr1::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::tr1::regex_replace(str, rx, fmt) << std::endl; 
 
    std::cout << "replacement == " 
        << std::tr1::regex_replace(str, rx, fmt, fonly) << std::endl; 
 
    return (0); 
    } 
 
replacement == AxAyAz replacement == Axayaz replacement == AdAeAf replacement == Adaeaf

Requisitos

Cabeçalho:<regex>

Namespace: std::tr1

Consulte também

Referência

<regex>

Função regex_match

Função regex_search