regex_replace Function
Zastępuje dopasowywane wyrażeń regularnych.
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);
Parametry
OutIt
Typ iteratora zamiany.BidIt
Typ iteratora submatches.RXtraits
Cech klasy elementów.Alloc
Klasa alokatora wyrażenia regularnego.Elem
Typ elementów, aby dopasować.flags
Flagi dla dopasowań.first
Początkiem sekwencji odpowiadać.fmt
Format wymiana.last
Koniec sekwencji odpowiadać.out
Wyjście iteratora.re
Wyrażenie regularne dopasuje.str
Ciąg pasuje.
Uwagi
Pierwsza funkcja konstrukcje regex_iterator Class obiektu iter(first, last, re, flags) i używa go, aby podzielić jej zakres wejściowy [first, last) do serii podciągów T0M0T1M1...TN-1MN-1TN, gdzie Mn jest nth dopasowanie wykrytych przez iteratora.Jeżeli stwierdzono odpowiedników, T0 jest cały zakres wejściowy i N jest równa zero.Jeśli (flags & format_first_only) != 0 jest używany tylko pierwszy mecz, T1 wszystkie występujący dopasowania tekstu wejściowego i N 1.Dla każdego i w zakresie [0, N), jeśli (flags & format_no_copy) == 0 kopiuje tekst w zakresie Ti do iteratora out.Następnie wywołuje m.format(out, fmt, flags), gdzie m jest match_results obiektu zwróconego przez obiekt iteratora iter dla podciąg Mi.Wreszcie Jeśli (flags & format_no_copy) == 0 kopiuje tekst w zakresie TN do iteratora out.Funkcja zwraca out.
Druga funkcja konstrukcje zmiennej lokalnej result typu basic_string<charT> i regex_replace(back_inserter(result), str.begin(), str.end(), re, fmt, flags).Zwraca result.
Przykład
// 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);
}
Wymagania
Nagłówek: <regex>
Obszar nazw: std