Je suis après quelques exemples simples et les meilleures pratiques d’utilisation des expressions régulières en ANSI C. `` ne fournit pas tant que ça aide.
Réponses
Trop de publicités?Les expressions régulières ne sont pas partie de la norme ANSI C. Il semble que vous pourriez être parler de l'expression régulière POSIX de la bibliothèque, qui est livré avec la plupart (tous?) *nixes. Voici un exemple d'utilisation de POSIX regexes dans C:
#include <regex.h>
regex_t regex;
int reti;
char msgbuf[100];
/* Compile regular expression */
reti = regcomp(®ex, "^a[[:alnum:]]", 0);
if (reti) {
fprintf(stderr, "Could not compile regex\n");
exit(1);
}
/* Execute regular expression */
reti = regexec(®ex, "abc", 0, NULL, 0);
if (!reti) {
puts("Match");
}
else if (reti == REG_NOMATCH) {
puts("No match");
}
else {
regerror(reti, ®ex, 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(®ex);
Sinon, vous voudrez peut-être vérifier PCRE, une bibliothèque Perl-compatible regular expressions dans C. La syntaxe de Perl est à peu près la même syntaxe Java, Python, et un certain nombre d'autres langues. La syntaxe POSIX est la syntaxe utilisée par le grep, sed, vi, etc.
Il n’est probablement pas ce que vous voulez, mais un outil comme re2c peut compiler POSIX(-ish) des expressions régulières pour ANSI C. Il est écrit comme un remplacement pour `` , mais cette approche permet de sacrifier la souplesse et la lisibilité pour le dernier morceau de vitesse, si vous avez vraiment besoin.
Peut être que vous essayez juste de trouver ce morceau de code
Brian W. Kernighan et Rob Pike a écrit pour traiter avec des caractères joker dans « grep »