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 :

Comment utiliser REGEXEC => expressions régulières [Tutoriel]


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Comment utiliser REGEXEC => expressions régulières
    Quelqu'un sait il utilser cette fonction (regexec) qui permet d'utiliser les expressions régulières en C (comme un grep par exemple). (=> regex.h)
    Voici sa structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int regexec (const  regex_t  *preg,  const  char  *string,
                        size_t  nmatch,  regmatch_t   pmatch[],   int
                        eflags);
    Un exemple serait le bienvenu pour comprendre.
    Merci d'avance.

    Tutoriel associé : Les expressions régulières en C
    --< KwIsAcH >--

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 92
    Points : 84
    Points
    84
    Par défaut
    Voici une fonction qui se trouve dans mon projet (tu peux le downloader pour avoir plus d'infos) :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    gint gw_strcmp_strregex ( gchar *str, gchar *regex, gboolean case_sensitive)
    {
    	regex_t *r;
    	gint cflags;
    	size_t no_sub;
    	regmatch_t *reg_result;
    	gint result = -1;
     
     
    #ifdef GW_DEBUG_TOOLS_COMPONENT
    	g_print ( "*** GW - %s (%d) :: %s()\n", __FILE__, __LINE__, __PRETTY_FUNCTION__);
    #endif
     
    	if ( (r = (regex_t *) g_malloc ( sizeof ( regex_t))) != NULL )
    	{
    		if ( case_sensitive == FALSE )
    		{
    			cflags = REG_ICASE;
    		}
    		else
    		{
    			cflags = 0;
    		}
     
    		if ( regcomp ( r, regex, cflags) != 0 )
    		{
    			regfree ( r);
    		}
    		else
    		{
    			no_sub = r->re_nsub + 1;
     
    			if ( (reg_result = (regmatch_t *) g_malloc ( sizeof ( regmatch_t) * no_sub)) != NULL )
    			{
    				if ( regexec ( r, str, no_sub, reg_result, 0) == 0 )
    				{
    					g_free ( r);
     
    					result = 0;
    				}
     
    				g_free ( reg_result);
    			}
    		}
    	}
     
    #ifdef GW_DEBUG_TOOLS_COMPONENT
    	if ( result == 0 )
    	{
    		g_print ( "*** GW - %s (%d) :: %s() : %s == %s\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, str, regex);
    	}
    	else
    	{
    		g_print ( "*** GW - %s (%d) :: %s() : %s <> %s\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, str, regex);
    	}
    #endif
     
    	return result;
    }
    Zero
    My site : http://blog.lecacheur.com
    GWhere project : http://www.gwhere.org
    Debian Addict site : http://www.debianaddict.org

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci je vais regarder ca... mais ca ma l'air assez complexe ....
    --< KwIsAcH >--

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    salut, pourrais tu m'expliquer qq pts...

    gint gw_strcmp_strregex ( gchar *str, gchar *regex, gboolean case_sensitive)
    => que veut dire gint ? pourquoi pas int ?

    et quels sont les types passés ? ils sont définis comment ?

    merci d'avance
    --< KwIsAcH >--

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Savez vous pourquoi je peux avoir cette erreur qui provient du "regex.h" ?

    /usr/include/regex.h:46: syntax error before `regoff_t'
    /usr/include/regex.h:46: warning: data definition has no type or storage class
    /usr/include/regex.h:56: syntax error before `regoff_t'
    --< KwIsAcH >--

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 92
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par kwisach
    gint gw_strcmp_strregex ( gchar *str, gchar *regex, gboolean case_sensitive)
    => que veut dire gint ? pourquoi pas int ?
    merci d'avance
    J'utilise la Glib. Dans cette librairie tous les types de base sont redéfinis. Tu n'as qu'à enlever les g devant les gchar, gint, gboolean, ...

    Les paramètres :
    str : chaine à comparer
    regex : l'expression régulière
    case_sensitive : si oui ou non la casse est sensible

    Pour les détails voir les tutoriels et cours pour apprendre la programmation en langage C : http://c.developpez.com/cours/
    Zero
    My site : http://blog.lecacheur.com
    GWhere project : http://www.gwhere.org
    Debian Addict site : http://www.debianaddict.org

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation d'une expression régulière dans un AWK
    Par Nattiz dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 27/08/2013, 21h08
  2. Comment utiliser les Expressions régulières de manière intelligente?
    Par Nono Sto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/10/2012, 14h58
  3. Réponses: 6
    Dernier message: 14/12/2007, 23h26
  4. Comment utiliser un "Regular Expression"
    Par IdrilElendil dans le forum VBScript
    Réponses: 2
    Dernier message: 20/08/2007, 22h04
  5. Utilisation d'expression régulière
    Par red210 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 16/04/2005, 16h45

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