Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  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 : 2
    Points
    2

    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 :
    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 : 22
    Points
    22

    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 : 2
    Points
    2

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •