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

Algorithmes et structures de données Discussion :

Algo de Pattern matching


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 184
    Points : 56
    Points
    56
    Par défaut Algo de Pattern matching
    Bonjour a tous,

    Je cherche un algorithme qui me permettrait de faire matcher des chaines, j'etend par la de les comparer tout en introduisant un caractere joker

    exemple : Test et T*st match ou Test et Test* match aussi

    Je pensais diviser selon 3 cas, suivant la longueur de la chaine pattern :

    - Si les deux chaines font la meme taille, comparer lettre par lettre
    - Si le pattern est plus petit, aligner le pattern sur la premiere lettre qui match et remplir le reste avec des * et me ramener au cas 1
    - Si le pattern est plus grand ? Je ne sais pas

    Auriez-vous un algo ?

    Merci.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Que veux tu dire par "comparer" ? Calculer la distance entre les 2 chaines ?

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 184
    Points : 56
    Points
    56
    Par défaut
    Dire si elles sont identique a un joker pret

    Exemple : "test" et "test" sont identique, "t*" et "test" aussi

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    ah... du Wildcard matching. Et bien il y a plein d'algorithmes. Par exemple ici.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 184
    Points : 56
    Points
    56
    Par défaut
    Aucun de ces exemples n'est complet, il manque le tableau mapCaseTable a chaque fois :/

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par iowa Voir le message
    Aucun de ces exemples n'est complet, il manque le tableau mapCaseTable a chaque fois :/


    C'est un vieil héritage du DOS : DosMapCase.

    C'est une table de conversion qui transforme les 256 codes ASCII possibles (0...255) en caractères lisibles, de meme casse et sans accents. Ca permet de faire rapidement des comparaisons qui gèrent tous les cas de caractères équivalents.

    ...
    mapCaseTable['e']='E'
    mapCaseTable['é']='E'
    mapCaseTable['è']='E'
    mapCaseTable['ê']='E'
    ...

    Dans un premier temps, tu peux simplement créer une table de conversion qui ne convertit rien.

    CHAR mapCaseTable[256];
    for (i = 0; i < 256; ++i) mapCaseTable[i] = i;

  7. #7
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 184
    Points : 56
    Points
    56
    Par défaut
    Super, ca fonctionne, tu penses que pour compter le nombre de fois que le pattern matche avec la string a comparer le raisonnement est similaire ?

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par iowa Voir le message
    Super, ca fonctionne, tu penses que pour compter le nombre de fois que le pattern matche avec la string a comparer le raisonnement est similaire ?
    Que veux tu dire par "le nombre de fois que le pattern matche avec la string" ?

    Soit le pattern correspond, soit il ne correspond pas. Mais je ne vois pas ce que vient faire le "nombre de fois".

  9. #9
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 184
    Points : 56
    Points
    56
    Par défaut
    Par exemple : abcbd et *b* matchent 2 fois : ("a","cbd") et ("abc","d")

Discussions similaires

  1. Pattern Matching sur une InputStream?
    Par Phoxtrot dans le forum Général Java
    Réponses: 2
    Dernier message: 19/05/2008, 14h36
  2. Use of uninitialized value in pattern match (m//)
    Par Vladkergan dans le forum Langage
    Réponses: 4
    Dernier message: 13/01/2008, 19h25
  3. pattern matching (image processing)
    Par anatore dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 15/10/2007, 16h01
  4. Use of uninitialized value in pattern match(m//)
    Par hayaet dans le forum Langage
    Réponses: 1
    Dernier message: 08/10/2007, 11h45
  5. [Regex] Pattern matching
    Par jeRame dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 26/06/2007, 14h28

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