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

avec Java Discussion :

Problème d'expression régulière


Sujet :

avec Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 728
    Points : 250
    Points
    250
    Par défaut Problème d'expression régulière
    Bonjour,
    j'utilise la methode String.matches(String regex) pour savoir si une string correspond à l'expression régulière regex

    Pour moi regex="[0-9]+" veut dire une chaine de caractère comportant au moins un chiffre entre 0 et 9

    pourtant le test "3.5".matches("[0-9]+") me retourne false

    où est l'erreur ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 265
    Points : 179
    Points
    179
    Par défaut
    Bonsoir,


    peut être lui dire qu'il peut trouver n'importe quel caractère devant ou derrière le chiffre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "3.5".matches(".*[0-9]{1}.*");
    ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "3.5".matches("[0-9a-z.]*");

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par flamant Voir le message
    Pour moi regex="[0-9]+" veut dire une chaine de caractère comportant au moins un chiffre entre 0 et 9
    Non, ça veut dire ne contient que des chiffres de zéro à neuf. Et au moins un.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre habitué Avatar de dev_2007
    Profil pro
    Inscrit en
    Août 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 98
    Points : 138
    Points
    138
    Par défaut
    pourtant le test "3.5".matches("[0-9]+") me retourne false
    c'est normal que ta chaîne n'est pas matchée par rapport à l'expression régulière parce que ta chaîne contient un chiffre + point + chiffre, ce qui n'est pas disponible sur "[0-9]+".

    "[0-9]+" => {0, 1, 2, ..., 9, 00, 11, ..., 99, 123, ....., 123345678688788}

    l'élément "3.5" n'appartient à l'ensemble ci-dessus, c'ou le false.
    Cordialement,
    HEL
    __________________
    Tout d'abord le faire fonctionner , Ensuite qu'il soit rapide. Enfin le rendre agréable à utiliser.

  5. #5
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    Bonjour,
    si tu veux matcher un nombre flottant (un float) façon "anglaise" (c'est à dire, le point pour séparer les décimaux au lieu de la virgule), voici l'expression régulière correcte.
    Ainsi, voici ce que tu obtiendras si tu appliques le regex sur les exemples suivants:
    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
     
    import static java.lang.System.out;
     
    public class RegexTest {
     
        public static void main(String[] args) {
            final String regex = "^\\d+(\\.\\d+){0,1}$";
            out.println("3.5".matches(regex));   // true
            out.println("3.5.4".matches(regex)); // false
            out.println("3.5a".matches(regex));  // false
            out.println(".5".matches(regex));    // false
            out.println("3.".matches(regex));    // false
            out.println("44".matches(regex));    // true
        }
    }
    Le regex dit en gros ceci:
    1°) Le mot doit toujours commencer par au moins un chiffre -> \d+
    2°) Le mot peut ensuite contenir et se terminer par l'ensemble 'point' et chiffre au plus qu'une seule fois -> (\.\d+){0,1}
    voilà.
    Cordialement,
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

Discussions similaires

  1. petit problème d'expression régulière
    Par stoyak dans le forum Langage
    Réponses: 5
    Dernier message: 16/05/2006, 11h20
  2. [regexp] petit problème d'expression régulière
    Par LE NEINDRE dans le forum Langage
    Réponses: 14
    Dernier message: 16/12/2005, 10h33
  3. Problème d'expression régulière
    Par SiM07 dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 17h57
  4. Problème d'expression régulière
    Par Pymm dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 11/10/2005, 15h04
  5. Problème d'expression régulière
    Par Neitsa dans le forum Général Python
    Réponses: 3
    Dernier message: 11/08/2005, 14h29

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