regex_replace, fonction
Remplace les expressions régulières correspondantes.
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);
Paramètres
OutIt
Le type d'itérateur pour les remplacements.BidIt
Le type d'itérateur pour les submatches.RXtraits
Classe Traits des éléments.Alloc
La classe d'allocateur d'expression régulière.Elem
Type des éléments à faire correspondre.flags
Signale les associations.first
Début de la séquence à associer.fmt
Le format des remplacements.last
Fin de la séquence à associer.out
Itérateur de sortie.re
Expression régulière à mettre en correspondance.str
Chaîne à mettre en correspondance.
Notes
La première fonction construit un objet regex_iterator, classe iter(first, last, re, flags) et l'utilise pour fractionner la plage d'entrée [first, last) en une série de sous-séquences T0M0T1M1...TN-1MN-1TN, où Mn est la correspondance des nth détectée par l'itérateur. Si aucune correspondance n'est trouvée, T0 est la plage d'entrée entière et N est zéro. Si (flags & format_first_only) != 0 seule la première correspondance est utilisé, T1 est tout texte d'entrée qui suit la correspondance, et N est 1. Pour chaque i dans la plage [0, N), si (flags & format_no_copy) == 0 il copie le texte dans la plage Ti à l'itérateur out. Il appelle ensuite m.format(out, fmt, flags), où m est l'objet match_results retourné par l'objet itérateur iter de la sous-séquence Mi. Enfin, si (flags & format_no_copy) == 0 il copie le texte dans la plage TN à l'itérateur out. La fonction retourne out.
La deuxième fonction construit une variable locale result de type basic_string<charT> et appelle regex_replace(back_inserter(result), str.begin(), str.end(), re, fmt, flags). Il retourne result.
Exemple
// 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);
}
Configuration requise
Header: <regex>
Espace de noms : std