IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Posix regex : capture d'une sous chaine


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 87
    Par défaut Posix regex : capture d'une sous chaine
    Bonjour,
    après voir lu le tutorial sur developpez.com à propos de la librairie regex, j'ai un petit problème. Par exemple avec une expression régulière toute simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    www\.([[:alnum:]]*)\.([[:lower:]]*)
    J'aimerai non pas extraire le motif correspondant à l'expression régulière mais les sous-chaines correspondants aux parenthèses de mon motif.

    Avec la structure regmatch_t *pmatch;

    ou

    pmatch[0].rm_so; est l'indice du premier caractère du motif
    pmatch[0].rm_eo; est l'indice du dernier caractère du motif

    je pensais que :

    pmatch[1].rm_so; etait l'indice du premier caractère de la sous chaine correspondant à la parenthèse 1.
    pmatch[1].rm_eo; etait l'indice du dernier caractère de la sous chaine correspondant à la parenthèse 1.

    Mais apparemment pas du tout.
    J'utilise donc ce code qui ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    regcomp (&preg, motif, REG_EXTENDED);
    	pmatch = malloc (sizeof (*pmatch) * nmatch);
    	nmatch = preg.re_nsub;
          	if(pmatch)
          	{
    		while(regexec (&preg, chaine, nmatch, pmatch, 0) == 0)
             	{
    			for(i = 1; i <= nmatch; i ++)
    			{
            			trouv = NULL;
     
    				start = pmatch[i].rm_so;
            			end = pmatch[i].rm_eo;
            			size = end - start;
     
            			trouv = malloc (sizeof (*trouv) * (size + 1));
            			if(trouv)
            			{
           					strncpy (trouv, &chaine[start], size);
           					trouv[size] = 0;
     
    					m[j++]= trouv;
    				}
    			}
     
                          	chaine = chaine + end;	
             	}
    	}
     
    	regfree(&preg);
    Est-il possible de faire donc une capture de parenthèses avec cette librairie ?
    si non vers quel librairie dois-je me tourner ?

    Merci

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par flo_k Voir le message
    Est-il possible de faire donc une capture de parenthèses avec cette librairie ?
    si non vers quel librairie dois-je me tourner ?
    Boost.Regex le fait très bien mais c'est du C++
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. REGEX supprimer un caractère dans une sous chaine
    Par taha_g dans le forum Langage
    Réponses: 12
    Dernier message: 27/07/2015, 15h43
  2. Regex et extraction d'une sous-chaine
    Par Alex'78 dans le forum C
    Réponses: 1
    Dernier message: 28/02/2013, 07h45
  3. Extraire une sous chaine avec un regex
    Par luminatis dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 26/04/2012, 09h46
  4. REGEX qui ne contient pas une sous-chaine
    Par Franky731 dans le forum C#
    Réponses: 4
    Dernier message: 02/04/2009, 15h11
  5. Rechercher une sous chaine dans une chaine
    Par Oluha dans le forum ASP
    Réponses: 4
    Dernier message: 03/02/2005, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo