Deberías crear un programa en C que incluyese (#include) alguna biblioteca de procesado de expresiones regulares (C por defecto no tiene soporte para casi nada).
Luego, reservas un
char * con la cadena a procesas, otro más con la cadena patrón, y se lo envías como argumentos a la función apropiada dentro de la biblioteca.
El resultado será escrito, seguramente, en algún
array que previamente habrás tenido que reservar memoria, en que cada elemento es un puntero a un
char * donde se almacenarán las capturas de grupo, más un valor de verdad que indica la concordancia del patrón con la cadena, más un valor opciones con la posición en la que ha quedado parado el motor de coincidencias (para ser usado en la próxima búsqueda de coincidencias repetitivas).
Hay varias bibliotecas para hacer esto. Aquí tienes un ejemplo con la biblioteca POSIX:
Using c Syntax Highlighting
#include <regex.h>
regex_t regex; /* nuestra estructura regex */
int reti; /* valor de retorno de las llamadas */
char msgbuf[100]; /* un pequeño buffer para escribir mensajes */
/* Compilar la expresión regular */
reti = regcomp(®ex, "^a[[:alnum:]]", 0); /* Compilamos /^a[[:alnum:]]/ */
if( reti ){ fprintf(stderr, "Could not compile regex\n"); exit(1); }
/* Ejecutamos la expresión regular */
reti = regexec(®ex, "abc", 0, NULL, 0); /* contra la cadena "abc" */
if( !reti ){
puts("Match"); /* Éxito: coincide */
}
else if( reti == REG_NOMATCH ){
puts("No match"); /* No coincide */
}
else{ /* Se produjo un error; informamos */
regerror(reti, ®ex, msgbuf, sizeof(msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
exit(1);
}
/* Liberamos el espacio reservado por la expresión regular */
regfree(®ex);
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Por Internet tienes muchos
más ejemplos.
Si quieres usar una biblioteca parecida (idéntica) a la que usa Perl, debes usar la
biblioteca PCRE. Si vas a necesitar expresiones sencillas, puedes resolverlo con puro código C, como demostraron los legendarios Kernighan y Pike, con
un ejemplo para grep. También hay herramientas que pueden transformar expresiones regulares a código C, como
re2c.