Expresiones regulares en C

Requisito previo: ¿Cómo escribir expresiones regulares?
Una expresión regular es una secuencia de caracteres que se utiliza para buscar patrones. Se utiliza principalmente para la coincidencia de patrones con strings, o la coincidencia de strings, etc. Son una forma generalizada de hacer coincidir patrones con secuencias de caracteres. Se utiliza en todos los lenguajes de programación como C++, Java y Python.
Patrones en la biblioteca POSIX 
 

Expresión Descripción
[] Se utiliza para buscar cualquiera de los caracteres o números especificados entre corchetes.
[:número:] Se utiliza para encontrar cualquier dígito.
[:más bajo:] Se utiliza para encontrar alfabetos en minúsculas.
[:palabra:] Se utiliza para encontrar letras, números y guiones bajos.

Creación de Expresión Regular 
Para compilar o crear la expresión regular se utiliza la función regcomp() . Toma tres argumentos: 
Sintaxis: 
 

regcomp(&regex, expression, flag)

dónde, 
 

  1. regex es un puntero a una ubicación de memoria donde se compara y almacena la expresión.
  2. expresión es un tipo de string
  3. bandera para especificar el tipo de compilación

Valor devuelto: Esto devuelve el valor como se muestra a continuación: 
 

  • 0 : cuando se realiza una compilación exitosa.
  • Error_code : cuando no se compila correctamente la expresión.

A continuación se muestra la ilustración de la función regcomp():
 

C

// C program for illustration of regcomp()
#include <regex.h>
#include <stdio.h>
 
// Driver Code
int main()
{
 
    // Variable to create regex
    regex_t reegex;
 
    // Variable to store the return
    // value after creation of regex
    int value;
 
    // Function call to create regex
    value = regcomp( &reegex, "[:word:]", 0);
 
    // If compilation is successful
    if (value == 0) {
        printf("RegEx compiled successfully.");
    }
 
    // Else for Compilation error
    else {
        printf("Compilation error.");
    }
    return 0;
}
Producción

RegEx compiled successfully.

Coincidencia de patrón mediante expresión regular 
La función regexec() se utiliza para comparar una string con un patrón. Toma cinco argumentos: 
 

  1. Un patrón precompilado
  2. Una string en la que se debe buscar el patrón.
  3. Información sobre la ubicación de los partidos.
  4. Indicadores para especificar un cambio en el comportamiento de coincidencia.

Sintaxis: 
 

regexec(&regex, expression, 0, NULL, 0);

donde, regex = patrón precompilado, 
expresión = patrón para coincidir en regex, 
NULL = información sobre la ubicación de las coincidencias. 
flag = para especificar el cambio en el comportamiento de coincidencia
Valor devuelto: Esto devuelve el valor como se muestra a continuación: 
 

  • 0 : Si hay una coincidencia.
  • REG_NOMATCH : si no hay coincidencia.

A continuación se muestra la ilustración de la función regexec():
 

C

// C program to illustrate the regexec() function
#include <regex.h>
#include <stdio.h>
 
// Function to print the result
void print_result(int value)
{
 
    // If pattern found
    if (value == 0) {
        printf("Pattern found.\n");
    }
 
    // If pattern not found
    else if (value == REG_NOMATCH) {
        printf("Pattern not found.\n");
    }
 
    // If error occurred during Pattern
    // matching
    else {
        printf("An error occurred.\n");
    }
}
 
// Driver Code
int main()
{
 
    // Variable to store initial regex()
    regex_t reegex;
 
    // Variable for return type
    int value;
    int value2;
 
    // Creation of regEx
    value = regcomp( &reegex, "Welcome to GfG", 0);
 
    // Comparing pattern "GeeksforGeeks" with
    // string in reg
    value = regexec( &reegex, "GeeksforGeeks",
                    0, NULL, 0);
 
    // Creation of regEx
    value2 = regcomp( &reegex, "GeeksforGeeks", 0);
 
    // Comparing pattern "Geeks"
    // with string in reg
    value2 = regexec( &reegex, "GeeksforGeeks",
                     0, NULL, 0);
 
    // Print the results
    print_result(value);
    print_result(value2);
    return 0;
}
Producción

Pattern not found.
Pattern found.

Publicación traducida automáticamente

Artículo escrito por Mindblender_3094 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *