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::regexcontiene 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_matchpara cadenas completas yregex_searchpara coincidencias de subcadenas- clases de caracteres, cuantificadores, anclajes y alternancia
- clases predefinidas como
\\dy 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
- Conceptos básicos de regex
- Grupos de captura
- Búsqueda y reemplazo
- Notas de rendimiento