p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Homme Profil pro
    Développeur .NET
    Inscrit en
    décembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2011
    Messages : 15
    Points : 3
    Points
    3

    Par défaut Détecter un conflit entre deux expressions régulières

    Bonjour à tous,

    Après des recherches sur votre forum et ailleurs, je reste bloqué devant un défi technique : je n'arrive pas à détecter un conflit entre deux expressions régulières. Illustration (schématique) :

    Les expressions régulières ont la syntaxe de « filtres » de fichiers Windows.

    Voici un nom de fichier : « ALIB.TXT »

    Et trois expressions régulières, et le résultat qu'elles renvoient (Match) :
    • Expression 1 : « A*B.TXT » = OUI
    • Expression 2 : « AL*.TXT » = OUI
    • Expression 3 : « B*.TXT » = NON


    Conclusion :
    • Les expressions 1 & 2 peuvent être en conflit
    • Les expressions 1 & 3, et 2 & 3 ne peuvent jamais être en conflit (impossible)


    La question à laquelle je ne trouve pas de réponse est... :
    Comment faire pour détecter que les expressions 1 & 2 peuvent être en conflit ?

    Je code en C#, et j'ai besoin de coder une méthode qui ressemblerait à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    bool IsConflitualRegex(string expr1, string expr2)
    {
      // Code difficile à écrire
      // return true ou false;
    }
    Est-ce que l'un d'entre vous aurait des pistes à me soumettre ?

    Merci d'avance,

    Picsonald.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    avril 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : avril 2009
    Messages : 19
    Points : 24
    Points
    24

    Par défaut

    Je crois que c'est un problème assez difficile pour être codé dans une fonction, car si je comprends bien, tu cherche un moyen qui permet de dire que deux Regex sont équivalentes (Dans le monde des Maths cela revient à trouvé un invariant).
    Voilà un lien où on parle de ce problème
    http://fr.softuses.com/73604

  3. #3
    Invité de passage
    Homme Profil pro
    Développeur .NET
    Inscrit en
    décembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2011
    Messages : 15
    Points : 3
    Points
    3

    Par défaut

    Merci pour ta réponse !

    En effet, ton lien m'a mené vers les liens suivants :


    Je ne connaissais pas du tout ces notions mathématiques autour des expressions régulières. Une piste pour moi sera de déterminer le DFA minimal de mes regex, pour ensuite les comparer... Sachant qu'en plus, en C#, on a un moteur NFA.

    Je crois bien que c'est trop dur pour moi. Je vais abandonner le développement de cette méthode.

    Merci pour ton aide, mokfajri.

Discussions similaires

  1. Détecter les différences entre deux fichiers texte
    Par Calak dans le forum Fichiers
    Réponses: 9
    Dernier message: 12/07/2011, 17h25
  2. Conflit entre deux js dans une page HTML (inclure plusieurs js)
    Par karinemariejeanne dans le forum JavaScript
    Réponses: 6
    Dernier message: 28/06/2007, 16h31
  3. conflit entre deux fonction while
    Par kaolivier dans le forum PHP & MySQL
    Réponses: 3
    Dernier message: 04/12/2006, 12h56
  4. Conflit entre deux fonction WHILE
    Par kaolivier dans le forum PHP & MySQL
    Réponses: 2
    Dernier message: 28/11/2006, 18h15
  5. Réponses: 3
    Dernier message: 07/07/2006, 18h00

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