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 :

Galère avec une expression régulière


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut Galère avec une expression régulière
    Bonjour,

    J'essaie de trouver un expression régulière pour vérifier qu'une chaîne commence par un D suivant ou non par un chiffre de 0 à 99 (mais pas de 01 ou 02 ou ... 09)


    Mon dernier essai (infructueux évidemment) est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Regex.IsMatch("^D([0-9]){0,2}", "D9")

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Bonjour,
    Je ne comprends pas bien.
    Le D doit être suivit d'un nombre de 0 à 99, mais pas 01 ou 02 ou … ou 09.
    Donc si je traduis, le D doit être suivit d'un premier chiffre de 1 à 9, puis éventuellement d'un second chiffre de 0 à 9.
    J'ai bon ?

    Tatayo.

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Ce n'est pas tout à fait ça.

    - Je peux avoir D tout seul
    - Je peux avoir D0 à D99
    - Je ne peux pas avoir D01, D02, etc. (mais en fait, je viens de m'apercevoir que ça ne gène pas le traitement alors on peut ignorer cette règle)


    Regex101.com m'indique que ^D\d{0,2} correspondrai à mon besoin.
    Mais Regex.IsMatch("^D\\d{0,2}", "D9") me renvoie False, et je ne comprends pas.

    Et puis j'ai vu que le D était utilisé pour exprimer autre chose.
    Du coup j'ai changé Regex.IsMatch("^\"D\"\\d{0,2}", "D9") mais toujours False.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    D'après regexp101.com, je dirai ^[D][1-9]{0,1}[0-9]{0,1}$, voir en plus simple: ^[D][1-9]?[0-9]?$.
    Ce qui nous donne:
    ** Début de chaine**
    Un caractère D
    entre 0 et 1 caractère compris entre 1 et 9
    entre 0 et 1 caractère compris entre 0 et 9
    ** Fin de chaine**
    Ainsi après le D si on a 2 chiffres, le premier ne peut pas être 0.
    Accessoirement, D01 ne passe pas avec celles-ci

    Tatayo.

  5. #5
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par tatayo Voir le message
    D'après regexp101.com, je dirai ^[D][1-9]{0,1}[0-9]{0,1}$, voir en plus simple: ^[D][1-9]?[0-9]?$.
    Attention, cela ne match pas D0 !

    Voici une regex qui devrait fonctionner selon les attentes : ^D(?:0|[1-9][0-9]?)$On demande que la chaîne commence par un D, puis on ouvre une parenthèse non capturante (pour pouvoir faire un "ou"), et on attend :
    • Soit la chaine 0 (puisque D0 est acceptée) ;
    • soit une chaine sur 2 chiffres au plus dont le premier n'est pas 0 (puisque D01, D02, ... ne sont pas accepté).

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Citation Envoyé par François DORIN Voir le message
    Attention, cela ne match pas D0 !
    Et pourtant j'ai fait le test avec https://regex101.com/, D0 est bien accepté:
    • La "chaine" D
    • 0 ou 1 caractère compris entre 1 et 9
    • 0 ou 1 caractère compris entre 0 et 9

    D0 est bien pris, car j'ai la lettre D, 0 caractères entre 1 et 9 et 1 caractères entre 0 et 9.
    D01 ne matche pas, car si j'ai 3 caractères, le deuxième doit être entre 1 et 9.

    Tatayo.

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

Discussions similaires

  1. [FAQ] Comment tester une chaîne de caractères avec une expression régulière ?
    Par Baptiste Wicht dans le forum Vos Contributions VBScript
    Réponses: 1
    Dernier message: 20/11/2007, 19h43
  2. Problème avec une expression régulière ?
    Par MaTHieU_ dans le forum Delphi
    Réponses: 1
    Dernier message: 28/04/2007, 18h50
  3. [RegEx] problème avec une expression régulière
    Par sissi25 dans le forum Langage
    Réponses: 2
    Dernier message: 19/04/2007, 09h12
  4. [JMeter] Extraction avec une expression régulière
    Par LittleBean dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 04/04/2007, 17h39
  5. Problème avec une expression régulière
    Par Darkroro dans le forum Langage
    Réponses: 7
    Dernier message: 09/10/2006, 12h13

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