Re - Bonjour
Après quelques manipulations d'expressions régulières, je viens de me heurter à un problème.
J'ai les chaines suivantes:
- [TaHiSe]_Bokurano_02_HDTV_[7253DE30]
- [TaHiSe] Bokurano 02 HDTV [7253DE30]
- [TaHiSe]Bokurano02[7253DE30]
- [SnN]_XXX_Holic_07_[3AF3442A]
- [SnN] XXX Holic 07 [3AF3442A]
J'arrive à récupérer sans problème le nom de la team ( Tahise ou SnN) et le numéro de l'épisode mais je n'arrive pas à récupérer le nom de la série.
J'ai résumé plus haut différentes manière de nommer un fichiers( et donc les contraintes que j'ai). il faut savoir: le nom peut être composé, séparé par des _ ou des espaces, ...
Pour récupérer le nom de la team j'ai utilisé la fonction suivante
Code :
- char* isoler_team(char* nom)
- {
- char * str_regex = "(([[|\\(][[:alnum:]]+[]|\\)])+)";
- regex_t preg;
- int err = regcomp (&preg, str_regex, REG_NOSUB | REG_EXTENDED);
- if (err == 0)
- {
- int match;
- size_t nmatch = 0;
- regmatch_t *pmatch = NULL;
- nmatch = preg.re_nsub;
- pmatch = malloc (sizeof (*pmatch) * nmatch);
- if (pmatch)
- {
- match = regexec (&preg, nom, nmatch, pmatch, 0);
- regfree (&preg);
- if (match == 0)
- {
- char *site = NULL;
- int start = pmatch[0].rm_so;
- int end = pmatch[0].rm_eo;
- size_t size = end - start;
- site = malloc (sizeof (*site) * (size + 1));
- if (site)
- {
- strncpy (site, &nom[start], size);
- site[size] = '\0';
- return (site);
- }
- }
- else exit (EXIT_FAILURE);
- }
- else exit (EXIT_FAILURE);
- }
- }
|
mais je ne sais pas comment récupérer le nom.
Si vous avez des idées