Usando expresiones regulares

C++:
Usando expresiones regulares

Cómo hacerlo:

C++11 introdujo soporte para expresiones regulares en la biblioteca estándar, <regex>, ofreciendo un marco robusto para la búsqueda y manipulación de cadenas. Aquí hay un ejemplo básico de cómo usar expresiones regulares para buscar un patrón dentro de una cadena:

#include <iostream>
#include <regex>

int main() {
    std::string target = "Hola, mi correo es [email protected]";
    std::regex email_pattern(R"(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b)");

    if (std::regex_search(target, email_pattern)) {
        std::cout << "¡Correo encontrado!" << std::endl;
    } else {
        std::cout << "No se encontró correo." << std::endl;
    }

    return 0;
}

Salida de muestra

¡Correo encontrado!

Para manipulaciones más complejas, como reemplazar patrones dentro de cadenas, las expresiones regulares de C++ pueden ser muy útiles:

#include <iostream>
#include <regex>

int main() {
    std::string text = "La lluvia en España cae principalmente en la llanura.";
    std::regex vowel_regex("([aeiou])");

    std::string replaced_text = std::regex_replace(text, vowel_regex, "*");
    std::cout << replaced_text << std::endl;

    return 0;
}

Salida de muestra

L* ll*v** *n Esp**ñ* c** pr*nc*p*lm*nt* *n l* ll*n*r*.

Para los programadores que exploran más allá de la biblioteca estándar, la Biblioteca Regex de Boost (boost/regex.hpp) es una opción de terceros popular que ofrece capacidades de regex mejoradas y optimizaciones de rendimiento, particularmente para patrones complejos o procesamiento de datos extensivos:

#include <iostream>
#include <boost/regex.hpp>

int main() {
    std::string s = "¡Las bibliotecas Boost son divertidas!";
    boost::regex expr("(\\w+)\\s(bibliotecas)"); // Coincidir con "Bibliotecas Boost"
    std::string fmt("GNU \\1"); // Reemplazar con "GNU Boost"

    std::string result = boost::regex_replace(s, expr, fmt);
    std::cout << result << std::endl;

    return 0;
}

Salida de muestra

GNU Boost son divertidas!

Estos ejemplos apenas rasguñan la superficie de las capacidades de C++ con expresiones regulares, ilustrando búsquedas básicas, emparejamiento de patrones y reemplazos, ya sea usando la biblioteca estándar o potenciado por la poderosa implementación de regex de Boost.