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 :

Petit soucis sur une expression régulière (RegEx)


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    281
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Points : 47
    Points
    47
    Par défaut Petit soucis sur une expression régulière (RegEx)
    Bonjour à tous,

    Je rencontre un petit soucis pour la construction d'une expression régulière.
    Je voudrais déja savoir si ce que je veux vérifier est possible via les expression régulières.

    Je souhaite tester si une chaine de caractère commencer par un ' " ' ( une double quote), contient ensuite nimporte quoi pour n'importe quelle longueur, et à un moment contient ' "= ' ( le cartères double quote suivi d'un caractère égale( avec ensuite encore d'autre chose.

    Exemple :

    "UserCannotCreate"=dwo

    Ce test est il réalisable en passant avec les Regex ?

    Merci beaucoup,

    Bien cordialement,

    Nixeus

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    327
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 327
    Points : 402
    Points
    402
    Par défaut
    Bonjour,
    Ce test est tout a fait réalisable avec des expression régulière.
    Après je ne me souviens plus comment on fait.
    Bonne chance pour trouver l'expression.
    A bientôt

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Bonjour,
    cette expression te permettra de trouver que la texte spécifié commence par " et de récupérer le texte entre "" et le texte après ton =

    Par exemple avec un Matchs tu pourras récupérer
    UserCannotCreate et dwo de ta ligne:
    "UserCannotCreate"=dwo

    Si le fait de récupérer le texte entre "" et après = ne t'intéresse pas tu peux juste utiliser l'expression suivante pour vérifier ta ligne:
    le . c'est pour tous les caractères y compris les @ _ - ' etc...

    Si tu veux exclure les lignes contenant d'autres caractères que des lettre et des chiffres tu peux utiliser \w à la place de . :

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    327
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 327
    Points : 402
    Points
    402
    Par défaut
    Voilà un petit indice : ^".*"=.*$
    Je ne suis pas sure de moi il faut tester et peu être protéger les double quotes.
    Un petit site pour d'aider http://lgmorand.developpez.com/dotnet/regex/
    A bientôt

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    281
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Points : 47
    Points
    47
    Par défaut
    Merci à vous pour vos réponse, il s'agit juste de faire un test, je vais tester ceci :

    ".+"=.+

    Merci beaucoup les amis !!

  6. #6
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    281
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Points : 47
    Points
    47
    Par défaut
    Je voudrais utiliser cette expression régulière

    ".+"=.+

    Mais ne manque il pas des quotes ?

    Merci

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Soit avec ma séquence d'échappement \"
    comme ça par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                Regex reg = new Regex("\".+\"=.+");
                string txt =  "\"UserCannotCreate\"=dwo";
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Regex reg = new Regex(@""".+""=.+");
    ou avec le caractère Unicode \u0022
    Tu as des exemples ici: http://msdn.microsoft.com/en-us/libr...82(VS.71).aspx

  8. #8
    Expert éminent
    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 : 46
    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
    Points : 7 660
    Points
    7 660
    Par défaut
    Histoire de, une meilleure expression serait : ^"[^"]+"=.+
    Cela permet d'éviter les backtracking inutiles.

    Sinon il n'est pas nécessaire d'instancier explicitement un objet Regex. En général les méthodes statiques de la classe Regex sont largement suffisantes.

  9. #9
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Le logiciel expresso permet de créer et de tester les expressions rationnelles

  10. #10
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    281
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Points : 47
    Points
    47
    Par défaut
    Merci à tous pour votre aide, c'est vraiment appréciable.
    Savez vous également comment récupérer le contenu du regEx ?

    J'ai tenté de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Regex Cle       = new Regex("\".+\"=.+");
     
    if (Cle.IsMatch(MaLigne1Bis))// On a une clé dans fichier 1
     
    {
         String Cle1 = Cle.Match(MaLigne1Bis).Result("${Cle1}");
    }
     
    Mais Cle1 me donne ${Cle1}, je pense que l'exemple que j'ai vu doit être faux.
    Merci à tous

  11. #11
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Salut.

    A l'aide de l'excellent tutoriel de StormimOn :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Regex myRegex = new Regex(@"^""(?<myKey>[^""]+)""=(?<myKeyValue>.+)$");
    Match match = myRegex.Match(MaLigne1Bis);
    if (match.Success) {// On a une clé dans fichier 1
        string myKey = match.Groups["myKey"].Value; // Vaut "UserCannotCreate"
        string myKeyValue = match.Groups["myKeyValue"].Value; // Vaut "dwo"
    }
    Les groupes nommés, c'est formidable, ça t'évite de t'embêter avec les indices

  12. #12
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    281
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Points : 47
    Points
    47
    Par défaut
    Merci bcp, je vais tester cela !!
    En tout cas, sacré syntaxe !!!

Discussions similaires

  1. Demande d'aide sur une expression régulière
    Par bubulemaster dans le forum Débuter
    Réponses: 4
    Dernier message: 03/04/2008, 13h19
  2. Problème sur une expression régulière
    Par GregLig dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 22/12/2007, 13h34
  3. Un peu d'aide sur une expression régulière particulier
    Par ruana dans le forum Général Python
    Réponses: 2
    Dernier message: 03/06/2007, 19h04
  4. [RegEx] Aide sur une expression régulière toute simple
    Par tchoumak dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2005, 15h46
  5. Problème sur une expression régulière
    Par Verbal-Quint dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2004, 10h54

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