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

Windows Forms Discussion :

Regex qui ne fonctionne pas


Sujet :

Windows Forms

  1. #1
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut Regex qui ne fonctionne pas
    Bonjour tout le monde ! Petit problème assez bête :

    Je développe un convertisseur algo -- vb .net , cependant supposons cet algo:

    i<-1
    //Je vais faire un repeter
    Repeter
    Afficher "Coucou"
    i <- i+1
    Jusqu'à i = 5
    Le problème est le suivent : Je veux remplacer "repeter" par do donc. Mais il me le change aussi dans le commentaire...

    J'ai donc essayé cette requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monfichier = Regex.Replace(monfichier, "^[^//]\brepeter\b(.*)\b", "do $1", RegexOptions.IgnoreCase)
    En partant du principe que ma ligne ne commence pas par //. Mais la il ne change plus rien... J'ai "repeter" sur les deux lignes. Une idée?
    ►Ne pas oublier le

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Et si tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    i<-1
    //Je vais faire un repeter
    Repeter
    Afficher "Repeter"
    i <- i+1
    Jusqu'à i = 5
    Comment tu t'en sors ?

    Je pense qu'il te faudrait un véritable analyseur syntaxique pour t'en sortir avec l'identification des chaines, entiers, (variables ?), commentaires, etc.

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par smyley Voir le message
    Je pense qu'il te faudrait un véritable analyseur syntaxique pour t'en sortir avec l'identification des chaines, entiers, (variables ?), commentaires, etc.
    Et un analyseur lexical aussi pour assurer la cohérence. Ce sera mieux.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Et un analyseur lexical aussi pour assurer la cohérence. Ce sera mieux.
    Ouai enfin bon, toutes les histoires de Lex, Yacc, Bizon, etc. , ça fait un bout de temps que j'y ai pas touché.
    A l'époque il y avais Coco/R qui n'était pas mal, c'est c'était il y a quelques années.

  5. #5
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Tout d'abord merci des réponses. Effectivement smyley ca pourrait être embettant

    En fait c'est une ap de BTS ce que je fais. Je suis juste parti de l'idée qu'un convertisseur marchait sur des regex sans avoir lu le moindre article ou vu le moindre code...

    Ainsi mon application marche aux trois quart, mais si je dois me prendre trop la tête au niveau des regex c'est vrai que c'est bête. Mon code n'étant pas long ca ne me gênerais pas de devoir reprendre entièrement le code.

    Donc au lieu de chercher pour le moment la réponse à mon problème, j'aimerais que vous m'en disiez plus sur un "analyseur syntaxique" ou encore un "analyseur lexicale". Comment ca marche, y a t-il des articles interessants à ce sujet? Es-ce toujours à base de Regex ou ca utilise juste des algorithmes un peu plus poussés?

    Merci déjà pour vos réponses...
    ►Ne pas oublier le

  6. #6
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Wow, alors là c'est une question qui demande une réponse avec beaucoup de paragraphes

    Bon ceci dit j'ai trouvé ceci : http://www.codeproject.com/KB/recipes/Irony.aspx
    Normalement avec ça tu dois pouvoir te faire ton propre mini-langage de programmation, et l'identifier correctement avec le C# (et donc convertir).

  7. #7
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Ha ca a l'air simple ^^

    Merci du lien, je vais d'abord m'amuser à traduire le texte en français puis après comprendre le code... En fait il fait tout lui même à base de classe ou autre...

    Bref je vais voir ça, encore merci ^^
    ►Ne pas oublier le

  8. #8
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Bon je reviens ici ... Je n'ai pas fais comme vous avez proposé mais j'ai résolu mon problème de façon plus simple et surtout plus rapide ainsi même avec l'algo suivant :

    //on va repeter
    repeter
    afficher "repeter"
    i <- i +1
    jusqu'à i = 5
    aucun problème.

    BOn maintenant nouveau problème toujours dans les regex... supposons la regex suivante (dans une fonction):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ARetourner = Regex.Replace(chaine, "^\s*jusqu'a\b(.*)|^\s*jusqu'à\b(.*)", "loop until $2", RegexOptions.IgnoreCase)
               Return ARetourner
    Pourquoi, si dans mon algo j'ai "jusqu'à" et non "jusqu'a" je dois écrire $2... Par la je veux dire je met un | donc un OU alors pourquoi j'ai du lui dire $2 pour que ca marche? Comment faire alors pour qu'il comprenne que ce qui suit derrière loop until est simplement la seule chose qui a été capturée?

    J'espère être clair dans ma question...
    ►Ne pas oublier le

  9. #9
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Je suis le roi des abrutis ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      ARetourner = Regex.Replace(chaine, "^\s*jusqu'a\b|jusqu'à\b(.*)", "loop until $1 ", RegexOptions.IgnoreCase)
    Return ARetourner
    Que la lumière soit ! Et la lumière fut

    Je vous remercie beaucoup pour vos réponses en tout cas ! Je vais malgré tout me pencher sur ces liens quand je serais en vacances
    ►Ne pas oublier le

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

Discussions similaires

  1. [RegEx] Regex simple mais qui ne fonctionne pas comme il faut
    Par yagami77 dans le forum Langage
    Réponses: 1
    Dernier message: 08/01/2011, 23h27
  2. Regex qui ne fonctionne pas
    Par CUCARACHA dans le forum ASP.NET
    Réponses: 0
    Dernier message: 22/10/2009, 19h10
  3. [RegEx] Regex simple qui ne fonctionne pas
    Par Bruno.C dans le forum Langage
    Réponses: 4
    Dernier message: 03/12/2008, 15h05
  4. regex qui ne fonctionne pas?
    Par linux dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 14/10/2005, 17h22
  5. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04

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