Freigeben über


regex_replace-Funktion

Replaces glich reguläre Ausdrücke ab.

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

Parameter

  • OutIt
    Der Iteratortyp für jeweiligen Ersatz.

  • BidIt
    Der Iteratortyp für Teilübereinstimmungen.

  • RXtraits
    Merkmalklasse für Elemente.

  • Alloc
    Die allocator-Klasse des regulären Ausdrucks.

  • Elem
    Der Typ der Elemente für die Übereinstimmung.

  • flags
    Flags für Übereinstimmungen.

  • first
    Anfang der Sequenz für die Übereinstimmung.

  • fmt
    Das Format für jeweiligen Ersatz.

  • last
    Ende der Sequenz für die Übereinstimmung.

  • out
    Der Ausgabeiterator.

  • re
    Der reguläre Ausdruck für die Übereinstimmung.

  • str
    Zeichenfolge zur Übereinstimmung.

Hinweise

Die erste Funktion erstellt ein regex_iterator-Klasse-Objekt die iter(first, last, re, flags) verwendet, um seinen Eingabebereich [first, last) in von Untersequenzen T0M0T1M1...TN-1MN-1TN zu teilen, wobei Mn die nth Übereinstimmung ist, die der Iterator erkannt wird. Wenn keine Übereinstimmungen gefunden werden, ist T0 der gesamte Eingabebereich und N ist null. Wenn (flags & format_first_only) != 0 nur die erste Übereinstimmung verwendet wird, ist T1 aller Eingabetext, der die Übereinstimmung erfolgreich, und N ist. 1. Für jedes i im Bereich [0, N), wenn (flags & format_no_copy) == 0 wird der Text im Bereich Ti der Iterator out kopiert. Sie ruft dann m.format(out, fmt, flags) auf, wobei m das match_results-Objekt ist, das vom Iteratorobjekt iter für die Untersequenz Mi zurückgegeben wird. Wenn schließlich (flags & format_no_copy) == 0 wird der Text im Bereich TN der Iterator out kopiert. Die Funktion gibt out zurück.

Die zweite Funktion erstellt eine lokale Variable result vom Typ basic_string<charT> und regex_replace(back_inserter(result), str.begin(), str.end(), re, fmt, flags) aufgerufen. Sie gibt result zurück.

Beispiel

 

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

Anforderungen

Header: <regex>

Namespace: std

Siehe auch

Referenz

<regex>

regex_match-Funktion

regex_search-Funktion