regex_replace – funkce
Nahradí odpovídající regulární výrazy.
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 iterátor pro nahrazení.BidIt
Typ iterátor pro submatches.RXtraits
Vlastnosti třídy prvků.Alloc
Přidělování třídy regulárních výrazů.Elem
Typ prvků tak, aby odpovídala.flags
Příznaky shody.first
Začátek posloupnosti tak, aby odpovídala.fmt
Formát pro nahrazení.last
Konec sekvenci tak, aby odpovídala.out
Výstupní iterace.re
Regulární výraz shodovat.str
Řetězec tak, aby odpovídala.
Poznámky
První funkce konstrukce regex_iterator – třída objektu iter(first, last, re, flags) a používá rozdělení jeho vstupní oblast [first, last) na řadu dílčích sekvencí T0M0T1M1...TN-1MN-1TN, kde Mn je nth shoda zjištěný iterace.Pokud nejsou nalezeny žádné shody, T0 je celý vstupní oblasti a N je nula.Pokud (flags & format_first_only) != 0 se používá pouze první shodu, T1 je vše vstupní text, který následuje po shodě a N 1.Pro každou i v oblasti [0, N), (flags & format_no_copy) == 0 zkopíruje text v rozsahu Ti k iteraci out.Potom zavolá m.format(out, fmt, flags), kde m je match_results objektu vráceného objektu iterátor iter pro subsequence Mi.Nakonec pokud (flags & format_no_copy) == 0 zkopíruje text v rozsahu TN k iteraci out.Funkce vrátí out.
Druhá funkce vytvoří místní proměnnou result typu basic_string<charT> a regex_replace(back_inserter(result), str.begin(), str.end(), re, fmt, flags).Vrátí result.
Příklad
// 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);
}
Požadavky
Záhlaví:<regex>
Obor názvů: std