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