0Pricing
C++ Academy · Lección

Conceptos básicos de regex

Busque patrones en texto

Conceptos básicos de regex es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 1 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.

¿Qué es <regex>?

El encabezado <regex> permite comparar texto con patrones de expresiones regulares que describen conjuntos de cadenas. Se construye un patrón y después se prueba o busca texto con él.

  • std::regex contiene un patrón compilado.
  • Las funciones de coincidencia indican si el texto encaja.
#include <iostream>
#include <regex>

int main() {
    std::regex pattern("hello");
    std::cout << std::boolalpha << std::regex_match("hello", pattern) << '\n';
    return 0;
}

regex_match frente a regex_search

regex_match exige que coincida la cadena completa. regex_search tiene éxito si el patrón aparece en cualquier parte de la cadena.

#include <iostream>
#include <regex>

int main() {
    std::regex p("cat");
    std::string s = "the cat sat";
    std::cout << std::boolalpha;
    std::cout << "match: " << std::regex_match(s, p) << '\n';
    std::cout << "search: " << std::regex_search(s, p) << '\n';
    return 0;
}

Clases de caracteres

Los corchetes definen un conjunto de caracteres permitidos. [aeiou] coincide con cualquier vocal individual; los rangos como [a-z] coinciden con letras minúsculas.

#include <iostream>
#include <regex>

int main() {
    std::regex p("[a-z]+");
    std::cout << std::boolalpha << std::regex_match("hello", p) << '\n';
    std::cout << std::regex_match("Hello", p) << '\n';
    return 0;
}

Cuantificadores

Los cuantificadores controlan la repetición: *, cero o más; +, una o más; ?, opcional; y {n,m}, un intervalo de cantidades.

#include <iostream>
#include <regex>

int main() {
    std::regex p("a+b");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("aaab", p) << '\n';
    std::cout << std::regex_match("b", p) << '\n';
    return 0;
}

Clases predefinidas

Las clases abreviadas ahorran escritura: \\d coincide con un dígito, \\w con un carácter de palabra y \\s con un espacio en blanco. En el código fuente de C++, la barra inversa se duplica.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\d+");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("12345", p) << '\n';
    std::cout << std::regex_match("12a45", p) << '\n';
    return 0;
}

Anclajes

Los anclajes fijan una coincidencia a una posición: ^ marca el inicio y $ el final del texto. Coinciden con posiciones, no con caracteres.

#include <iostream>
#include <regex>

int main() {
    std::regex p("^abc$");
    std::cout << std::boolalpha;
    std::cout << std::regex_search("abc", p) << '\n';
    std::cout << std::regex_search("xabc", p) << '\n';
    return 0;
}

Alternancia

La barra vertical | significa «o». El patrón cat|dog coincide con cualquiera de las dos palabras. Use paréntesis para agrupar y limitar su alcance.

#include <iostream>
#include <regex>

int main() {
    std::regex p("cat|dog");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("cat", p) << '\n';
    std::cout << std::regex_match("dog", p) << '\n';
    std::cout << std::regex_match("fish", p) << '\n';
    return 0;
}

Escapado de caracteres especiales

Caracteres como ., * y ( tienen un significado especial. Escápelos con una barra inversa para que coincidan literalmente.

#include <iostream>
#include <regex>

int main() {
    std::regex p("3\\.14");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("3.14", p) << '\n';
    std::cout << std::regex_match("3x14", p) << '\n';
    return 0;
}

Coincidencias sin distinguir mayúsculas y minúsculas

Pase una marca como std::regex::icase al construir el patrón para ignorar las mayúsculas y minúsculas durante la coincidencia.

#include <iostream>
#include <regex>

int main() {
    std::regex p("hello", std::regex::icase);
    std::cout << std::boolalpha;
    std::cout << std::regex_match("HELLO", p) << '\n';
    std::cout << std::regex_match("Hello", p) << '\n';
    return 0;
}

Una validación sencilla

Los patrones son ideales para validar formatos de entrada, como comprobar que una cadena tiene el aspecto de un número básico con signo opcional.

#include <iostream>
#include <regex>

bool isNumber(const std::string& s) {
    static const std::regex p("-?\\d+");
    return std::regex_match(s, p);
}

int main() {
    std::cout << std::boolalpha;
    std::cout << isNumber("-42") << '\n';
    std::cout << isNumber("4a2") << '\n';
    return 0;
}

Realizar varias coincidencias

Combine clases y cuantificadores para validar formatos más completos, como una secuencia de letras seguida de dígitos.

#include <iostream>
#include <regex>

int main() {
    std::regex p("[A-Za-z]+\\d+");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("abc123", p) << '\n';
    std::cout << std::regex_match("123abc", p) << '\n';
    return 0;
}

Comprobación rápida

Compruebe cuánto entiende de la diferencia entre coincidencia y búsqueda.

Resumen

Ha aprendido los conceptos básicos de <regex>:

  • regex_match para cadenas completas y regex_search para coincidencias de subcadenas
  • clases de caracteres, cuantificadores, anclajes y alternancia
  • clases predefinidas como \\d y el escapado de caracteres especiales
  • marcas como icase

A continuación, extraerá partes específicas de una coincidencia mediante grupos de captura.

Preguntas frecuentes

¿La lección «Conceptos básicos de regex» es gratis?

Sí — el texto completo de «Conceptos básicos de regex» 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 «Conceptos básicos de regex»?

Busque patrones en texto 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 1 de 4.

¿Cuánto tiempo toma la lección «Conceptos básicos de regex»?

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