Expresiones regulares en C++ con ejemplos para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Expresiones regulares en C++ con ejemplos: guía completa para principiantes



Las expresiones regulares (regex) son una herramienta poderosa para buscar, validar y reemplazar texto según un patrón. En C++, el trabajo con expresiones regulares se implementa a través de la biblioteca <regex>, que apareció en el estándar C++11. En este artículo, analizaremos los fundamentos del trabajo con regex en C++ con ejemplos prácticos, comprensibles incluso para principiantes.



¿Qué son las expresiones regulares y para qué sirven?



Una expresión regular es una secuencia de caracteres que define un patrón para buscar en texto. Por ejemplo, el patrón \\d{3}-\\d{2}-\\d{2} describe el formato de un número SNILS: tres dígitos, guion, dos dígitos, guion, dos dígitos.



Las principales tareas que resuelven las expresiones regulares en C++ son:



  • Validación de entrada (correo electrónico, teléfono, fecha)
  • Extracción de datos de texto
  • Búsqueda y reemplazo de subcadenas
  • División de cadenas por separadores complejos


La biblioteca <regex> proporciona tres algoritmos principales:



  • std::regex_match — coincidencia completa de la cadena con el patrón
  • std::regex_search — búsqueda de coincidencia en la cadena
  • std::regex_replace — reemplazo de coincidencias según el patrón


Sintaxis básica de las expresiones regulares en C++



Antes de escribir código, analicemos los elementos básicos de la sintaxis regex que serán útiles en los ejemplos:



SímboloSignificadoEjemplo
.Cualquier carácter (excepto salto de línea)c.t — cat, cot, cut
\\dDígito (0-9)\\d\\d — 23, 45, 99
\\wLetra, dígito o guion bajo\\w+ — palabra
\\sCarácter de espacio en blanco\\s+ — uno o más espacios
*0 o más repeticionesab*c — ac, abc, abbc
+1 o más repeticionesab+c — abc, abbc (no ac)
?0 o 1 repeticióncolou?r — color, colour
{n}Exactamente n repeticiones\\d{3} — 123, 456
[abc]Cualquier carácter del conjunto[aeiou] — vocal
()Grupo de captura(\\d{2})-(\\d{2})


Ejemplo 1: Validación de dirección de correo electrónico con regex_match



Empecemos con algo simple: verificar si una cadena coincide con el formato de un correo electrónico. Usamos std::regex_match, que requiere una coincidencia completa.



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

int main() { std::string email = "user@example.com"; // Patrón simple para email: // [\\w.]+ — uno o más caracteres (letras, dígitos, punto, guion bajo) // @ — símbolo arroba // [\\w.]+ — nombre de dominio // \\.[a-z]{2,} — punto y dominio de nivel superior (de 2 letras) std::regex pattern(R"([\\w.]+@[\\w.]+\\.\\w{2,})"); if (std::regex_match(email, pattern)) { std::cout << "Email válido" << std::endl; } else { std::cout << "Email inválido" << std::endl; } // Ejemplo con email no válido email = "user@com"; if (std::regex_match(email, pattern)) { std::cout << "Email válido" << std::endl; } else { std::cout << "Email inválido" << std::endl; } return 0;}


Resultado de la ejecución:

Email válidoEmail inválido


Observa que

Blogs

Book Recommendations