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 :

Expression régulière c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 46
    Par défaut Expression régulière c#
    Bonjour à tous. Je débute tout juste dans les expressions régulières et cela fait un bon moment que j'essais de trouver l'expression qui me permettrais de valider si une constante est correctement écrite dans un fichier source de c#.

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    const int SENTINELLE_VENTE_MAX= 1000;
    Alors avec l'expression régulière que je cherche, je dois valider que le nom est écrit en majuscule et que s'il est composé de plus d'un mot, qu'ils soient liés ensemble avec un trait de soulignement et non un espace. Alors voici ce que j'ai trouvé pour le moment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^const (.*) ([A-Z]*=+)|([A-Z]*[^ ](_[A-Z]*)*=+ (.*))
    Alors merci pour votre aide ^^.

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Prendre un petit Expresso peut s'avérer utile à ce moment

    Sinon je dirais quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^\s*const\s+int\s+[A-Z]([A-Z_]*[A-Z])?\s*=\s*[^;]+\s*;\s*$
    Par contre au niveau des recommandations d'écriture, les constantes ne sont pas en majuscules. Elles sont traitées comme un nom de classe, méthode, propriété, ... à savoir la casse Camel. Par exemple int32.MaxValue, qui est une constante. Les variables readonly (comme DateTime.MinValue et MaxValue) sont aussi des constantes et suivent donc le même formalisme.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    Les variables readonly (comme DateTime.MinValue et MaxValue) sont aussi des constantes
    Ben pas vraiment, dans le sens où elle n'auront pas toujours la même valeur. Une fois que tu as affecté une valeur, tu ne peux plus la changer, mais tu peux décider à l'exécution la valeur à affecter. Et une constante est forcément statique, contrairement à un champ readonly, donc plusieurs instances d'une classe peuvent avoir différentes valeurs pour le même champr readonly

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    En fait je voulais dire qu'elle suive la même règle que les constantes pour l'écriture. Je me suis mal exprimé en remettant la notion de constante à ce niveau car effectivement cela ne correspond pas au comportement de variable readonly

  5. #5
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 46
    Par défaut
    Merci beaucoup pour votre aide à tous les deux, mais StormimOn j'aimerais bien si tu pouvais m'expliquer en mots ce que cette expression régulière fait exactement, car même si j'ai la réponse, je ne comprend pas toutes les petites subtilités. Aussi j'ai essayé ton code et ça marche toujours pas :s. Je me demande si c'est à cause de la fonction «Regex» de c# que ça marche pas ou quoi, mais pourtant il ne devrait y avoir aucun problème pourtant. Je te laisse voir la partie du code qui utilise cette fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (p_lignes[p_noLigne].SansCommentaire.Contains("const") 
         && ! Regex.IsMatch(p_lignes[p_noLigne].Ligne, 
         "^\s*const\s+int\s+[A-Z]([A-Z_]*[A-Z])?\s*=\s*[^;]+\s*;\s*$"))
         p_lignes[p_noLigne] += "La constante est écrit incorrectement.";

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Il faudrait voir le contenu de p_lignes[p_noLigne].Ligne pour pouvoir t'aider

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

Discussions similaires

  1. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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