regex_replace en C++ | Reemplace la coincidencia de una string usando regex_replace

std::regex_replace() se usa para reemplazar todas las coincidencias en una string,

Sintaxis:

regex_replace(subject, regex_object, replace_text)

Parámetros: Acepta tres parámetros que se describen a continuación:

  1. String de asunto como primer parámetro.
  2. El objeto regex como segundo parámetro.
  3. La string con el texto de reemplazo como tercer parámetro.

Valor devuelto: la función devuelve una nueva string con los reemplazos aplicados.

  1. $& o $0 se usa para insertar la coincidencia de expresiones regulares completa.
  2. Se utiliza $1, $2,… hasta $9 para insertar el texto que coincide con los primeros nueve grupos de captura.
  3. $` (marca de retroceso) se usa para insertar la string que queda de la coincidencia.
  4. $’ (comilla) se usa para insertar la string que está a la derecha de la coincidencia.
  5. Si el número de grupos de captura es menor que el solicitado, se reemplazará por nada.

Ejemplos:
supongamos que se crea un objeto regex re(“(geeks)(.*)”) y la string de asunto es: subject(“todo se trata de geeksforgeeks”) , desea reemplazar la coincidencia por el contenido de cualquier grupo de captura ( por ejemplo, $0, $1, … hasta 9).

Ejemplo-1:
Reemplace la coincidencia por el contenido de $1.
Aquí la coincidencia es «geeksforgeeks» que será reemplazada por $1 («geeks»).
Por lo tanto, el resultado «se trata de geeks».

Ejemplo-2:
Reemplace la coincidencia por el contenido de $2.
Aquí la coincidencia es «geeksforgeeks» que será reemplazada por $2 («forgeeks»).
Por lo tanto, el resultado «se trata de forgeeks».

A continuación se muestra el programa para mostrar el funcionamiento de regex_replace.

// C++ program to show the working
// of regex_replace
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
    string subject("its all about geeksforgeeks");
  
    string result1, result2, result3, result4;
    string result5;
  
    // regex object
    regex re("(geeks)(.*)");
  
    // $2 contains, 2nd capturing group which is (.*) means
    // string after "geeks" which is "forgeeks". hence
    // the match(geeksforgeeks) will be replaced by "forgeeks".
    // so the result1 = "its all about forgeeks"
    result1 = regex_replace(subject, re, "$2");
  
    // similarly $1 contains, 1 st capturing group which is
    // "geeks" so the match(geeksforgeeks) will be replaced
    // by "geeks".so the result2 = "its all about geeks".
    result2 = regex_replace(subject, re, "$1");
  
    // $0 contains the whole match
    // so result3 will remain same.
    result3 = regex_replace(subject, re, "$0");
  
    // $0 and $& contains the whole match
    // so result3 will remain same
    result4 = regex_replace(subject, re, "$&");
  
    // Here number of capturing group
    // is 2 so anything above 2
    // will be replaced by nothing.
    result5 = regex_replace(subject, re, "$6");
  
    cout << result1 << endl << result2 << endl;
    cout << result3 << endl << result4 << endl
         << result5;
  
    return 0;
}
Producción:

its all about forgeeks
its all about geeks
its all about geeksforgeeks
its all about geeksforgeeks
its all about

Publicación traducida automáticamente

Artículo escrito por vivek kumar 9 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *