Biblioteca de expresiones regulares
La biblioteca de expresiones regulares proporciona una clase que representa expresiones regulares, que son una especie de mini-lenguaje que se utiliza para realizar coincidencias de patrones dentro de cadenas. Casi todas las operaciones con expresiones regulares se pueden caracterizar operando en varios de los siguientes objetos:
- Secuencia de destino. La secuencia de caracteres que se busca para un patrón. Este puede ser un rango especificado por dos iteradores, una cadena de caracteres terminada en nulo o un std::string.
- Patrón. Esta es la expresión regular en sí misma. Determina qué constituye una coincidencia. Es un objeto de tipo std::basic_regex, construido a partir de una cadena con una sintaxis especial. Véase regex_constants::syntax_option_type para obtener una descripción de las variaciones de sintaxis admitidas.
- Array de coincidencias. La información sobre coincidencias se puede recuperar como un objeto de tipo std::match_results.
- Cadena de reemplazo. Esta es una cadena que determina cómo reemplazar las coincidencias. Véase regex_constants::match_flag_type para obtener una descripción de las variaciones de sintaxis admitidas.
Contenido |
[editar]Clases principales
Estas clases encapsulan una expresión regular y los resultados de hacer coincidir una expresión regular dentro de una secuencia objetivo de caracteres.
(C++11) | Objeto de expresiones regulares. (plantilla de clase) |
(C++11) | Identifica la secuencia de caracteres coincididos por una subexpression. (plantilla de clase) |
(C++11) | Identifica una coincidencia de expresión regular, incluyendo todas las coincidencias de subexpresión. (plantilla de clase) |
[editar]Algoritmos
Estas funciones se utilizan para aplicar la expresión regular encapsulada en una expresión regular a una secuencia de caracteres de destino.
(C++11) | Intenta coincidir una expresión regular para toda la secuencia de caracteres. (plantilla de función) |
(C++11) | Intenta coincidir una expresión regular con cualquier parte de una secuencia de caracteres. (plantilla de función) |
(C++11) | Reemplaza las apariciones de una expresión regular con texto de reemplazo formateado. (plantilla de función) |
[editar]Iteradores
Los iteradores de expresiones regulares se utilizan para recorrer todo el conjunto de coincidencias de expresiones regulares encontrado dentro de una secuencia.
(C++11) | Itera a través de todas las coincidencias de expresiones regulares dentro de una secuencia de caracteres. (plantilla de clase) |
(C++11) | Itera a través de las subexpresiones especificadas dentro de todas las coincidencias de expresiones regulares en una cadena dada o a través de subcadenas no coincidentes. (plantilla de clase) |
[editar]Excepciones
Esta clase define el tipo de objetos lanzados como excepciones para reportar errores de la biblioteca de expresiones regulares.
(C++11) | Informa de errores generado por la biblioteca de expresiones regulares. (clase) |
[editar]Rasgos de tipo
La clase de rasgos de expresiones regulares se utiliza para encapsular los aspectos localizables de una expresión regular.
(C++11) | Proporciona metainformación sobre un tipo carácter, requerido por la biblioteca de expresiones regulares. (plantilla de clase) |
[editar]Constantes
Definido en el espacio de nombres std::regex_constants | |
(C++11) | Opciones generales para controlar el comportamiento de las expresiones regulares. (typedef) |
(C++11) | Opciones específicas para coincidencias. (typedef) |
(C++11) | Describe los diferentes tipos de errores de coincidencias. (typedef) |
[editar]Ejemplo
#include <iostream>#include <iterator>#include <string>#include <regex> int main(){std::string s ="Algunas personas, cuando se enfrentan a un problema, piensan ""\"Lo sé, usaré expresiones regulares.\" ""Ahora tienen dos problemas."; std::regex self_regex("EXPRESIONES REGULARES", std::regex_constants::ECMAScript|std::regex_constants::icase);if(std::regex_search(s, self_regex)){std::cout<<"El texto contiene la frase 'expresiones regulares'\n";} std::regex word_regex("(\\w+)");auto words_begin =std::sregex_iterator(s.begin(), s.end(), word_regex);auto words_end =std::sregex_iterator(); std::cout<<"Se encontraron "<<std::distance(words_begin, words_end)<<" palabras\n"; constint N =6;std::cout<<"Palabras de más de "<< N <<" caracteres:\n";for(std::sregex_iterator i = words_begin; i != words_end;++i){std::smatch match =*i;std::string match_str = match.str();if(match_str.size()> N){std::cout<<" "<< match_str <<'\n';}} std::regex long_word_regex("(\\w{7,})");std::string new_s =std::regex_replace(s, long_word_regex, "[$&]");std::cout<< new_s <<'\n';}
Salida:
El texto contiene la frase 'expresiones regulares' Se encontraron 18 palabras Palabras de más de 6 caracteres: Algunas personas enfrentan problema piensan expresiones regulares problemas [Algunas] [personas], cuando se [enfrentan] a un [problema], [piensan] "Lo sé, usaré [expresiones] [regulares]" Ahora tienen dos [problemas].