0Pricing
C++ Academy · Lección

Búsqueda y reemplazo

Transforme texto con regex

Búsqueda y reemplazo es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.

regex_replace

std::regex_replace devuelve una cadena nueva en la que cada coincidencia de un patrón se reemplaza por una cadena de reemplazo.

  • La cadena original no se modifica.
  • De forma predeterminada, se reemplazan todas las coincidencias.
#include <iostream>
#include <regex>

int main() {
    std::regex p("cat");
    std::string s = "the cat and the cat";
    std::cout << std::regex_replace(s, p, "dog") << '\n';
    return 0;
}

Reemplazar dígitos

Los patrones facilitan las modificaciones masivas, como ocultar cada dígito de una cadena con un marcador de posición.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\d");
    std::string s = "PIN 1234";
    std::cout << std::regex_replace(s, p, "*") << '\n';
    return 0;
}

Referencias inversas en el reemplazo

Use $1, $2, ... en la cadena de reemplazo para insertar los grupos capturados y poder reorganizar el texto.

#include <iostream>
#include <regex>

int main() {
    std::regex p("(\\w+) (\\w+)");
    std::string s = "John Smith";
    std::cout << std::regex_replace(s, p, "$2 $1") << '\n';
    return 0;
}

La coincidencia completa: $&

El token $& hace referencia a la coincidencia completa y resulta útil para envolver el texto encontrado con caracteres adicionales.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\d+");
    std::string s = "item 42";
    std::cout << std::regex_replace(s, p, "[$&]") << '\n';
    return 0;
}

Reemplazar solo la primera

Pase std::regex_constants::format_first_only para reemplazar únicamente la primera coincidencia en lugar de todas las apariciones.

#include <iostream>
#include <regex>

int main() {
    std::regex p("o");
    std::string s = "foo boo";
    auto out = std::regex_replace(s, p, "0", std::regex_constants::format_first_only);
    std::cout << out << '\n';
    return 0;
}

Normalizar espacios en blanco

Una tarea de limpieza habitual consiste en convertir las secuencias de espacios en blanco en un solo espacio.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\s+");
    std::string s = "too    many     spaces";
    std::cout << std::regex_replace(s, p, " ") << '\n';
    return 0;
}

Eliminar coincidencias

Reemplazar una coincidencia por una cadena vacía la elimina de manera efectiva, lo que resulta útil para quitar caracteres no deseados.

#include <iostream>
#include <regex>

int main() {
    std::regex p("[^a-zA-Z]");
    std::string s = "a1b2c3";
    std::cout << std::regex_replace(s, p, "") << '\n';
    return 0;
}

Reformatear fechas

Capture las partes de una fecha y reordénelas en el reemplazo para cambiar el formato.

#include <iostream>
#include <regex>

int main() {
    std::regex p("(\\d{4})-(\\d{2})-(\\d{2})");
    std::string s = "2026-05-30";
    std::cout << std::regex_replace(s, p, "$3/$2/$1") << '\n';
    return 0;
}

Conservar el texto sin coincidencias

De forma predeterminada, el texto sin coincidencias se copia tal cual. Use format_no_copy para mostrar únicamente los reemplazos y descartar el resto.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\d+");
    std::string s = "a1b2c3";
    auto out = std::regex_replace(s, p, "$&", std::regex_constants::format_no_copy);
    std::cout << out << '\n';
    return 0;
}

Censurar palabras

Combine la alternancia con el reemplazo para censurar una lista de palabras de una sola vez.

#include <iostream>
#include <regex>

int main() {
    std::regex p("bad|evil");
    std::string s = "a bad and evil idea";
    std::cout << std::regex_replace(s, p, "***") << '\n';
    return 0;
}

Construcción progresiva de un resultado

Como regex_replace devuelve una cadena, puede encadenar transformaciones pasando un resultado a la siguiente llamada.

#include <iostream>
#include <regex>

int main() {
    std::string s = "  Hello,   World  ";
    s = std::regex_replace(s, std::regex("\\s+"), " ");
    s = std::regex_replace(s, std::regex("^ | $"), "");
    std::cout << "[" << s << "]\n";
    return 0;
}

Comprobación rápida

Compruebe cuánto entiende de la sintaxis de reemplazo.

Resumen

Ha aprendido a transformar texto con regex_replace:

  • reemplaza todas las coincidencias de forma predeterminada y devuelve una cadena nueva
  • $1, $2, $& insertan las capturas y la coincidencia completa
  • marcas como format_first_only y format_no_copy
  • encadene llamadas para crear procesos de limpieza complejos

A continuación, aprenderá a usar las expresiones regulares de forma eficiente y a evitar problemas habituales de rendimiento.

Preguntas frecuentes

¿La lección «Búsqueda y reemplazo» es gratis?

Sí — el texto completo de «Búsqueda y reemplazo» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Búsqueda y reemplazo»?

Transforme texto con regex Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C++ Academy?

No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Búsqueda y reemplazo»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C++ Academy?

Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Conceptos básicos de regex
  2. Grupos de captura
  3. Búsqueda y reemplazo
  4. Notas de rendimiento
← Volver a C++ Academy