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 :

Regex :comparer deux chaines contenant des wildcards


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 99
    Points
    99
    Par défaut Regex :comparer deux chaines contenant des wildcards
    bonsoir à tous,

    J'ai besoin de votre aide pour comparer les deux chaines de caractères suivantes

    char *chaine1 = "Ganon!user@192.168.1.3";
    char *chaine2 = "*!*@192.*";
    le problème ici ce sont les wildcards, j'ai regardé un peu du coté de la bibliotèque <regex.h> et j'ai pondu ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    static int match_regexp(char *s1, char *s2)
    {
    	regex_t myreg;
     
    	if (regcomp(&myreg, s1, REG_ICASE|REG_NOSUB|REG_EXTENDED) != 0)
    		return 0;
     
    	if (regexec(&myreg, s2, 0, NULL, 0) != 0)
    		return 0;
     
    	regfree(&myreg);
    	return 1;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	if (!match_regexp(chaine1, chaine2))
    		return irc_notice(client->nick, "Les masques ne correspondent pas.");
    résultat, il n'y as pas concordance alors que ca devrait !
    surement une mauvaise utilisation de la bibliotèque de ma part
    merci à vous et bonne soirée.

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Ton expression "*!*@192.*" n'est pas une expression régulière, il est donc normal qu'elle ne donne pas le résultat que tu attends en utilisant <regex.h>

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 99
    Points
    99
    Par défaut
    oui en effet

    J'ai modifié chaine2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *chaine2 = ".*!.*@192..*";
    et ca fonctionne, merci

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Citation Envoyé par Ganondorf Voir le message
    oui en effet

    J'ai modifié chaine2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *chaine2 = ".*!.*@192..*";
    et ca fonctionne, merci
    Je ne connais pas cette librairie (enfin, de nom seulement) mais en tout logique l'avant-dernier point doit être échappé. Si l'antislash est le caractère d'échappement utilisé par cette librairie, il ne faut pas oublier de l'échapper lui aussi (vu qu'il s'agit d'une chaine de caractères C).

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 99
    Points
    99
    Par défaut
    salut,

    comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *chaine2 = ".*!.*@192\\..*";

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Citation Envoyé par Ganondorf Voir le message
    salut,

    comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *chaine2 = ".*!.*@192\\..*";
    Oui.

Discussions similaires

  1. Un Regex de chaine contenant des éèàç
    Par doc51 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 15/06/2009, 15h55
  2. passer d'une chaine contenant des espaces a un tableau
    Par flyfrog dans le forum Contribuez
    Réponses: 3
    Dernier message: 26/06/2006, 20h12
  3. [Tableaux] Chaine contenant des noms de variables
    Par novices dans le forum Langage
    Réponses: 6
    Dernier message: 06/04/2006, 23h33
  4. Comparer deux chaines de caractères dans un if ?
    Par Xplosif² dans le forum C++
    Réponses: 6
    Dernier message: 25/02/2006, 19h21
  5. comparer deux chaines de caractères
    Par peuf23 dans le forum Langage
    Réponses: 3
    Dernier message: 30/01/2006, 14h31

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