Ejemplo de regex glibc
Un ejemplo de uso de la libreria de regex de glibc, que trae
herramientas basicas para las expresiones regulares.
/**
* regexp.c
* ejemplo ultrabasico de uso libreria de expresiones regulares de glibc
*
* Se debe incluir la cabecera regex.h
* No se comparan dos strings, se debe "crear" un regex_t con la funcion regcomp
* y luego ya comparamos
*
* (c) Pello Xabier Altadill Izura - www.pello.info
*/
#include <stdio.h>
#include <stdlib.h>
#include <regex.h>
// Programa principal.
// acepta dos argumentos: una expresion regular y un string para matchear.
int main(int argc, char *argv[]){
// este el regexp que se debe iniciar
regex_t expresion;
int count;
if (argc != 3) {
printf("Uso: %s expresion texto
",argv[0]);
exit(1);
}
printf("Hola, tus argumentos han sido: ./%s %s %s
", argv[0],argv[1],argv[2]);
// CREACION de la expresion
// regcomp(&resultado, string-de-expresion, flag)
// los flag: REG_EXTENDED :expresiones extendidas POSIX
// REG_ICASE :case insensitive
// REG_NOSUB : se pasa de parametros nmatch y pmatch
// REG_NEWLINE : en operadores globales -*,+,^ pasar del salto de linea
if(regcomp(&expresion, argv[1] , 0) != 0){
perror("ERROR GORDO! al crear expresion regular.");
printf("vamos vamos que nos vamos
");
exit(1);
}
// USO de la expresion
// regexec(®ex, string-a-comparar, nmatch, pmatch, flags)
if(regexec(&expresion, argv[2], 0, NULL, 0) == 0) {
printf("%s <=> %s MATCH!!
",argv[1],argv[2]);
} else {
printf("%s <=> %s ? NO HAY MATCH
",argv[1],argv[2]);
}
// Liberamos la memoria okupada por la expresion. autogestion ante todo
regfree(&expresion);
return 0;
}
pello.io