Cela peut vous aider à démarrer, comme vous l'indiquez regex(3)
fonctions. Voici un programme trivial correspondant à ses arguments. Cependant, si vous êtes relativement nouveau à C, vous voudrez aller lentement avec regex(3)
, comme vous allez travailler avec des pointeurs et des tableaux et regmatch_t
-offsets fournis et les lions et les tigres et les ours. ;)
$ ./regexec '[[:digit:]]' 56789 alpha " " foo12bar
matched: 56789
matched: foo12bar
$ ./regexec '[[:digit:]](foo'
error: Unmatched (or \(
$ ./regexec '['
error: Invalid regular expression
... et la source:
#include <sys/types.h>
#include <regex.h>
#include <stdio.h>
int main(int argc, char **argv) {
int r;
regex_t reg;
++argv; /* Danger! */
if (r = regcomp(®, *argv, REG_NOSUB|REG_EXTENDED)) {
char errbuf[1024];
regerror(r, ®, errbuf, sizeof(errbuf));
printf("error: %s\n", errbuf);
return 1;
}
for (++argv; *argv; ++argv) {
if (regexec(®, *argv, 0, NULL, 0) == REG_NOMATCH)
continue;
printf("matched: %s\n", *argv);
}
return 0;
}
Parfait merci toi! – Dave
Aussi pour quelqu'un d'autre qui regarde cela, la réponse de John Millikin est tout aussi bonne. Son exemple fourni est pour PCRE et pilcrow est pour l'expression rationnelle de GNU C Lib je crois. – Dave