Subsecciones

Expresiones Regulares Posix en C

Las Expresiones Regulares 'a la Perl' no forman parte de ANSI C. La forma mas sencilla de usar regexps en C es utilizando la versión POSIX de la librería que viene con la mayoría de los Unix. Sigue un ejemplo que usa regex POSIX en C:
[~/src/C/regexp]$ cat use_posix.c 
#include <stdio.h>
#include <stdlib.h>
#include <regex.h>        

int main() {
       regex_t regex;
       int reti;
       char msgbuf[100];

/* Compile regular expression */
        reti = regcomp(&regex, "^a[[:alnum:]]", 0);
        if( reti ){ fprintf(stderr, "Could not compile regex\n"); exit(1); }

/* Execute regular expression */
        reti = regexec(&regex, "abc", 0, NULL, 0);
        if( !reti ){
                puts("Match");
        }
        else if( reti == REG_NOMATCH ){
                puts("No match");
        }
        else{
                regerror(reti, &regex, msgbuf, sizeof(msgbuf));
                fprintf(stderr, "Regex match failed: %s\n", msgbuf);
                exit(1);
        }

/* Free compiled regular expression if you want to use the regex_t again */
    regfree(&regex);
}
Compilación y ejecución:
[~/src/C/regexp]$ cc use_posix.c  -o use_posix
[~/src/C/regexp]$ ./use_posix 
Match

Enlaces Relacionados

  1. Regular Expression Matching in GNU C
  2. Pattern Matching in GNU C
  3. PCRE
  4. PCRE doc

Casiano Rodríguez León
2013-04-23