c regex tutorial regular expressions c with examples
El tutorial sobre expresiones regulares de C ++ o Regex explica el funcionamiento de la expresión regular en C ++, incluida la funcionalidad de coincidencia, búsqueda, reemplazo, validación de entrada y tokenización de expresiones regulares:
Las expresiones regulares o regexes o regexp, como se les llama comúnmente, se utilizan para representar un patrón particular de cadena o texto. Las expresiones regulares se utilizan a menudo para denotar una sintaxis textual estándar de una cadena.
=> Visite aquí para ver la serie de formación C ++ para todos.
Cada carácter de una expresión regular tiene un carácter con un significado literal o un 'metacarácter' que tiene un significado especial.
Por ejemplo , una expresión regular 'a (a-z)' puede tener valores 'aa', 'ab', 'ax', etc. Aquí a tiene un significado literal y (a-z) denota cualquier carácter en minúscula de la a a la z.
Por supuesto, el ejemplo anterior es el más simple. Podemos tener una expresión regular con patrones más complejos para combinar.
Casi todos los lenguajes de programación brindan soporte para expresiones regulares. C ++ tiene soporte directo para expresiones regulares desde C ++ 11 en adelante. Aparte de los lenguajes de programación, la mayoría de los programas de procesamiento de texto como lexers, editores de texto avanzados, etc. utilizan expresiones regulares.
En este tutorial, exploraremos los detalles de las expresiones regulares en general, así como con respecto a la programación en C ++.
Lo que vas a aprender:
- Expresión regular (regex) en C ++
- Plantillas de funciones utilizadas en C ++ regex
- Validación de entrada de C ++
- Conclusión
Expresión regular (regex) en C ++
Una expresión regular o regex es una expresión que contiene una secuencia de caracteres que definen un patrón de búsqueda particular que se puede usar en algoritmos de búsqueda de cadenas, algoritmos de búsqueda o búsqueda / reemplazo, etc. Las expresiones regulares también se usan para la validación de entrada.
La mayoría de los lenguajes de programación brindan capacidad incorporada para expresiones regulares o mediante bibliotecas. Desde C ++ 11 en adelante, C ++ proporciona soporte para expresiones regulares mediante la biblioteca estándar a través del encabezado.
Un procesador de expresiones regulares que se utiliza para analizar una expresión regular la traduce a una representación interna que se ejecuta y se compara con una cadena que representa el texto que se busca. C ++ 11 usa la gramática ECMAScript como la gramática predeterminada para expresiones regulares. ECMAScript es simple, pero proporciona potentes capacidades de expresión regular.
Veamos algunos de los patrones que especificamos en expresiones regulares como Especificación de rango, Patrones repetidos, etc.
Especificaciones de rango
La especificación de un rango de caracteres o literales es uno de los criterios más simples utilizados en una expresión regular.
Por ejemplo, podemos especificar un rango de letras minúsculas de la a a la z de la siguiente manera:
(Arizona)
Esto coincidirá exactamente con un carácter en minúscula.
Los siguientes criterios,
(A-Za-z0-9)
La expresión anterior especifica el rango que contiene un solo carácter en mayúscula, un carácter en minúscula y un dígito del 0 al 9.
Los corchetes (()) en las expresiones anteriores tienen un significado especial, es decir, se utilizan para especificar el rango. Si desea incluir un corchete como parte de una expresión, deberá evitarlo.
Entonces, la siguiente expresión,
((0-9)
La expresión anterior indica un corchete de apertura y un dígito en el rango de 0 a 9 como expresión regular.
Pero tenga en cuenta que como estamos programando en C ++, necesitamos usar la secuencia de escape específica de C ++ de la siguiente manera:
(\(0-9)
Patrón repetido
Los ejemplos de rango que hemos especificado anteriormente coinciden solo con un carácter o literal. Si queremos hacer coincidir más de un carácter, normalmente especificamos el 'modificador de expresión' junto con el patrón, lo que lo convierte en un patrón repetido.
Un modificador de expresión puede ser '+' que sugiere hacer coincidir la aparición de un patrón una o más veces o puede ser '*' que sugiere hacer coincidir la aparición de un patrón cero o más veces.
Por ejemplo,la siguiente expresión,
(a-z) + coincide con las cadenas como a, aaa, abcd, softwaretestinghelp, etc. Tenga en cuenta que nunca coincidirá con una cadena en blanco.
La expresion,
(Arizona)* coincidirá con una cadena en blanco o cualquiera de las cadenas anteriores.
Si desea especificar un grupo de caracteres para que coincida una o más veces, puede utilizar los paréntesis de la siguiente manera:
(Xyz) +
La expresión anterior coincidirá con Xyz, XyzXyz y XyzXyzXyz, etc.
Ejemplo de expresión regular de C ++
Considere una expresión regular que coincida con un nombre de archivo de MS-DOS como se muestra a continuación.
|_+_|La expresión regular anterior se puede interpretar de la siguiente manera:
Coincidir con una letra (minúscula y luego mayúscula) o un guión bajo. Luego, haga coincidir cero o más caracteres, en los que cada uno puede ser una letra, un guión bajo o un dígito. Luego, haga coincidir un punto literal (.). Después del punto, haga coincidir uno o más caracteres, en los que cada uno puede ser una letra o un dígito que indique la extensión del archivo.
Plantillas de funciones utilizadas en C ++ regex
Analicemos ahora algunas de las plantillas de funciones importantes al programar regex en C ++.
regex_match ()
Esta plantilla de función se utiliza para coincidir con el patrón dado. Esta función devuelve verdadero si la expresión dada coincide con la cadena. De lo contrario, la función devuelve falso.
A continuación se muestra un ejemplo de programación en C ++ que demuestra la función regex_match.
|_+_|Producción:
En el programa anterior, primero, comparamos la cadena 'softwareTesting' con la expresión regular '(' (suave) (. *) 'Usando la función regex_match. Posteriormente, también demostramos diferentes variaciones de regex_match pasándole un objeto de cadena, rango, etc.
búsqueda_regex ()
La función regex_search () se utiliza para buscar un patrón en la cadena que coincida con la expresión regular.
Considere el siguiente programa C ++ que muestra el uso de regex_search ().
|_+_|Producción:
Especificamos una cadena y luego una expresión regular usando el objeto regex. Esta cadena y regex se pasan a la función regex_search junto con el tipo de bandera smatch. La función busca la primera aparición de patrón en la cadena de entrada y devuelve la cadena coincidente.
regex_replace ()
La función regex_replace () se usa para reemplazar el patrón que coincide con una expresión regular con una cadena.
Usemos un programa C ++ para demostrar la función regex_replace ().
|_+_|Producción:
Aquí, tenemos una cadena de entrada. Proporcionamos una expresión regular para que coincida con una cadena que comienza con 'p'. Luego, reemplazamos la palabra coincidente con la palabra 'sitio web'. A continuación, reemplazamos la palabra 'sitio web' por el portal.
Validación de entrada de C ++
Hemos discutido las principales plantillas de funciones que se utilizan para la coincidencia de patrones utilizando expresiones regulares. Es notable que el propósito principal que tiene la expresión regular es la validación de entrada. Puede validar la entrada ingresada desde un dispositivo de entrada estándar usando la expresión regex.
Consulte el programa a continuación para demostrar cómo puede usar la expresión regular para validar los datos entrantes.
|_+_|Producción:
Este programa coincide con la entrada ingresada por el usuario para validar si es un número entero. La salida anterior muestra que cuando se ingresa un número entero, da un mensaje apropiado y cuando se ingresa cualquier otro dato da el mensaje como entrada inválida.
prueba de software entrevista preguntas y respuestas doc
Conclusión
Regex se utiliza en motores de búsqueda para buscar patrones, buscar y reemplazar diálogos de aplicaciones como procesadores de texto y editores de texto. Regex también se usa en utilidades de UNIX como sed, awk, así como en el análisis léxico del programa.
Hemos visto las funciones que se utilizan para hacer coincidir, buscar y reemplazar patrones en este tutorial. Usando estas funciones, básicamente podemos desarrollar una aplicación eficiente que implemente la funcionalidad deseada usando expresiones regulares.
Regex permite validar eficientemente la entrada o buscar y reemplazar una cadena por patrón de parche y esto se puede hacer usando muy pocas líneas de código C ++.
Leer también => Tutorial de expresiones regulares de Java
=> Consulte TODOS los tutoriales de C ++ aquí.
Lectura recomendada
- MongoDB Regular Expression $ regex con ejemplo
- Tutorial de Python DateTime con ejemplos
- Cómo utilizar expresiones regulares de Unix
- Tutorial de longitud de matriz de Java con ejemplos de código
- Tutorial de secuencias de comandos de shell de Unix con ejemplos
- Tutorial de fragmentación de MongoDB con ejemplo
- Tutorial de búsqueda de elementos por texto de selenio con ejemplos
- Tutorial de Unix Pipes: Pipes en la programación Unix