Biblioteca C ++ Regex - regex_replace

Descripción

Hace una copia de la secuencia de destino (el sujeto) con todas las coincidencias de la expresión regular rgx (el patrón) reemplazadas por fmt (el reemplazo). La secuencia de destino es s o la secuencia de caracteres entre el primero y el último, según la versión utilizada.

Declaración

A continuación se muestra la declaración 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,

Parámetros

  • s - Es una cadena con la secuencia objetivo.

  • rgx - Es un objeto basic_regex para que coincida.

  • flags - Se utiliza para controlar cómo se empareja rgx.

  • m - Es un objeto de tipo match_results.

Valor devuelto

Devuelve un objeto de cadena con la secuencia resultante.

Excepciones

No-noexcept - esta función miembro nunca arroja excepciones.

Ejemplo

En el siguiente ejemplo para 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 salida debería ser así:

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