Expresión regular en C

Hacer regex en C # o PHP es muy fácil para mí ahora. Sin embargo, actualmente tengo la necesidad de usar expresiones regulares en C. Y, parece que no entiendo completamente el uso de regcomp o regexec. Definitivamente es por mi falta de experiencia en C.

Cualquier ayuda y ejemplos serían muy apreciados!

Esto puede ayudarle a comenzar, ya que indica las funciones de regex(3) . A continuación se presenta un progtwig trivial que coincide con sus argumentos. Sin embargo, si es relativamente nuevo en C, querrá ir lentamente con regex(3) , ya que estará trabajando con punteros y matrices y compensaciones proporcionadas por regmatch_t y leones, tigres y osos. 😉

 $ ./regexec '[[:digit:]]' 56789 alpha " " foo12bar matched: 56789 matched: foo12bar $ ./regexec '[[:digit:]](foo' error: Unmatched ( or \( $ ./regexec '[' error: Invalid regular expression 

… y la fuente:

 #include  #include  #include  int main(int argc, char **argv) { int r; regex_t reg; ++argv; /* Danger! */ if (r = regcomp(&reg, *argv, REG_NOSUB|REG_EXTENDED)) { char errbuf[1024]; regerror(r, &reg, errbuf, sizeof(errbuf)); printf("error: %s\n", errbuf); return 1; } for (++argv; *argv; ++argv) { if (regexec(&reg, *argv, 0, NULL, 0) == REG_NOMATCH) continue; printf("matched: %s\n", *argv); } return 0; } 

Usa la librería PCRE . Los ejemplos se incluyen en la fuente, en el directorio demo/ . Aquí hay un enlace directo a pcredemo.c .

Necesita una biblioteca que la proporcione, y hay varias para elegir. PCRE es uno.

También está libslack (str) – módulo de cadena:

http://libslack.org/manpages/str.3.html

La biblioteca gnu C tiene una biblioteca regex