Comment faire des remplacements de chaînes regex en C pur?

J’ai examiné les fonctions de regex dans la bibliothèque de regex POSIX et la bibliothèque PCRE, mais les deux ne semblent pas avoir de fonction de remplacement de chaîne. Je ne veux pas utiliser C ++, et ce serait mieux si je n’avais pas besoin de lier une autre bibliothèque (mais je peux le faire si je dois le faire). Dois-je effectuer manuellement le remplacement de la chaîne? Si oui, comment puis-je utiliser des groupes de capture?

regex.h ne fournit pas de support natif pour le remplacement de chaîne, mais fournit des groupes de sous-expressions / captures qui le rendent beaucoup plus facile. Je suppose que vous connaissez bien les compilations regex et que vous passez directement à l’exécution et aux sous-expressions de regex.

regexec () est défini comme suit dans regex.h (/ usr / include /):

extern int regexec (const regex_t *__ressortingct __preg, const char *__ressortingct __ssortingng, size_t __nmatch, regmatch_t __pmatch[__ressortingct_arr], int __eflags); 

Les premier, deuxième et dernier arguments sont les expressions rationnelles, la chaîne à exécuter et les indicateurs d’exécution, respectivement. Les troisième et quasortingème arguments sont utilisés pour spécifier un tableau de regmatch_t. Un regmatch_t est constitué de deux champs: rm_so et rm_eo, qui sont les index, ou décalages, du début et de la fin de la zone appariée, respectivement. Ces index peuvent ensuite être utilisés avec memcpy () , memset () et memmove () à partir de ssortingng.h pour remplacer une chaîne.

Je vais faire un petit exemple et le poster plus tard.

Bonne chance et j’espère que cela a aidé.

La bibliothèque PCRE elle-même ne fournit pas de fonction de remplacement, mais une page d’encapsulation est disponible sur la page de téléchargement de PCRE. Elle accepte le style perl =~ s/pattern/replace/ syntax, puis utilise les fonctions natives de PCRE pour effectuer un remplacement / remplacement. vous. Allez sur http://www.pcre.org/ puis cliquez sur le lien de téléchargement: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ , puis sur le répertoire Consortingb . Le paquet / projet que vous voulez est: pcrs-0.0.3-src.tar.gz .

Notez que je ne l’ai pas utilisé moi-même, je ne peux donc pas témoigner de son efficacité. Cependant, il s’agit d’un code assez petit et simple qui peut donc parfaitement servir votre objective.