Bibliothèque Regex C ++ - regex_replace

La description

Il fait une copie de la séquence cible (le sujet) avec toutes les correspondances de l'expression régulière rgx (le modèle) remplacées par fmt (le remplacement). La séquence cible est soit s, soit la séquence de caractères entre le premier et le dernier, selon la version utilisée.

Déclaration

Voici la déclaration de std :: regex_replace.

template <class traits, class charT>
   basic_string<charT>regex_replace (const charT* s,
          const basic_regex<charT,traits>& rgx,
          const charT* fmt,

C ++ 11

template <class traits, class charT>
   basic_string<charT>regex_replace (const charT* s,
          const basic_regex<charT,traits>& rgx,
          const charT* fmt,

C ++ 14

template <class traits, class charT>
   basic_string<charT>regex_replace (const charT* s,
          const basic_regex<charT,traits>& rgx,
          const charT* fmt,

Paramètres

  • s - C'est une chaîne avec la séquence cible.

  • rgx - C'est un objet basic_regex à faire correspondre.

  • flags - Il est utilisé pour contrôler la correspondance entre rgx.

  • m - C'est un objet de type match_results.

Valeur de retour

Il renvoie un objet chaîne avec la séquence résultante.

Des exceptions

No-noexcept - cette fonction membre ne lève jamais d'exceptions.

Exemple

Dans l'exemple ci-dessous pour std :: regex_replace.

#include <iostream>
#include <string>
#include <regex>
#include <iterator>

int main () {
   std::string s ("there is a subsequence in the string\n");
   std::regex e ("\\b(sub)([^ ]*)");

   std::cout << std::regex_replace (s,e,"sub-$2");
  
   std::string result;
   std::regex_replace (std::back_inserter(result), s.begin(), s.end(), e, "$2");
   std::cout << result;

   std::cout << std::regex_replace (s,e,"$1 and $2",std::regex_constants::format_no_copy);
   std::cout << std::endl;

   return 0;
}

La sortie devrait être comme ça -

there is a sub-sequence in the string
there is a sequence in the string
sub and sequence