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

Langage Perl Discussion :

Expression Régulière pour float


Sujet :

Langage Perl

  1. #1
    Membre habitué

    Inscrit en
    Mars 2002
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 83
    Points : 125
    Points
    125
    Par défaut [Résolu]Expression Régulière pour float
    Bonjours. J'essai de créer une expression régulière pour tester une valeur numérique.

    Sachant que celle-ci peut prendre la forme suivante :

    [+|-]XX.YY
    Ex:
    0
    10
    10.2
    10.23
    -10.23
    +10.23


    Mais malheureseument mes essais sont infructeux.

    Merci.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    A partir de ton jeu de valeurs acceptées, voici un script qui semble fonctionner correctement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #/usr/bin/perl
     
    @_ = ("0","10","10.2","10.23","-10.23","+10.23","10.23a");
     
    foreach(@_)
    {
        if (/^\+|-?[0-9]+\.?[0-9]*$/)
        {
            print "$_ OK\n";
        }
        else
        {
            print "$_ PAS OK\n";
        }
    }
    Il produit en sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    0 OK
    10 OK
    10.2 OK
    10.23 OK
    -10.23 OK
    +10.23 OK
    10.23a PAS OK
    En décortiquant l'expression régulière :

    si commence éventuellement par signe + ou signe -

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [0-9]+\.?[0-9]*$/
    si contient une valeur numérique suivie éventuellement d'un point et se termine éventuellement par une valeur numérique

    Tu pourras faire évoluer le code pour séparer les entiers des flottants.

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Malheureusement, ta regex est légèrement fausse, car l'alternative ne se limite pas à un token de chaque côté, ce qui signifie ici que ton alternative "|" est entre "^\+" et "-?[0-9]+\.?[0-9]*$", et donc ta regex accepte "+ machin truc chouette !" ou "La proposition suivante -10"....

    Je propose donc plutôt : /^(?:+|-)?\d+(?:\.\d+)?$/ .
    Evidemment nous manquons de détails sur les formes acceptés, par exemple 10. est-il valide, y a-t-il vraiment un maximum de deux chiffres avant/après la virgule, etc... :

    --
    Jedaï

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Ah ah, ce bon vieux Jedai, toujours au service de la veuve et de l'orphelin


  5. #5
    Membre habitué

    Inscrit en
    Mars 2002
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 83
    Points : 125
    Points
    125
    Par défaut
    Ben ca c'est de la réponse. Sympa.

    J'avais essayer l'expression suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^[+-]?[0-9]+\.?[0-9]*$
    Mais malheureusement des entrées comme 100 ne marche pas. Bon je pourais tester la valeur -99.99<=X<=99.99

    mais je voulais savoir si c'était possible avec une expression régulière.

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Si tu tiens à ce qu'il y ait maximum 2 chiffres après/avant la virgule (le point ici), tu peux le faire avec une regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^&#91;+-&#93;?\d&#123;1,2&#125;&#40;?&#58;\.\d&#123;1,2&#125;&#41;?$/
    --
    Jedaï

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

Discussions similaires

  1. [RegEx] Expression régulière pour supprimer des doublons
    Par cbroissa dans le forum Langage
    Réponses: 5
    Dernier message: 20/05/2017, 01h59
  2. [RegEx] Expression régulière pour réduire des URL
    Par kivan666 dans le forum Langage
    Réponses: 6
    Dernier message: 11/06/2006, 21h39
  3. [RegEx] Expression régulière pour trouver des mots
    Par cbroissa dans le forum Langage
    Réponses: 7
    Dernier message: 26/05/2006, 23h39
  4. [RegEx] Simple expression régulière pour ereg_replace
    Par aurapp dans le forum Langage
    Réponses: 6
    Dernier message: 12/03/2006, 12h34
  5. Expression régulière pour récupérer le nom d'un fichier
    Par calimero2611 dans le forum Langage
    Réponses: 5
    Dernier message: 24/02/2006, 19h00

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