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

Collection et Stream Java Discussion :

Question sur regex


Sujet :

Collection et Stream Java

  1. #1
    Membre émérite
    Homme Profil pro
    Développeur Java/Scala
    Inscrit en
    Octobre 2007
    Messages
    1 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Scala

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 086
    Points : 2 271
    Points
    2 271
    Par défaut Question sur regex
    Bonjour,


    Juste une petite question sur les regex que je me pose...

    Supposons le string en input:
    Number1 is 123.456.789 Number2 is 13.416.789
    Number3 is 8.179 Number4 is 189
    Number5 is 3.756.759

    Et la regex
    String NUMBER_REGEX = "(([0-9]{1,3}\\.)*[0-9]+)";


    Quand on cherche à matcher la regex, je me demande comment vont fonctionner les classes java.


    Ce que je veux dire c'est que pour le premier match d'un nombre 123.456.789 je vois plusieurs matchs possible:
    - ([0-9]{1,3}\\.) 2 fois puis 3 fois [0-9]+ -> 123.456.789
    - ([0-9]{1,3}\\.) 2 fois puis 2 fois [0-9]+ -> 123.456.78
    - ([0-9]{1,3}\\.) 2 fois puis 1 fois [0-9]+ -> 123.456.7
    - ([0-9]{1,3}\\.) 1 fois puis 3 fois [0-9]+ -> 123.456
    - ([0-9]{1,3}\\.) 1 fois puis 2 fois [0-9]+ -> 123.45
    - ([0-9]{1,3}\\.) 1 fois puis 1 fois [0-9]+ -> 123.4
    - ([0-9]{1,3}\\.) 0 fois puis 3 fois [0-9]+ -> 123
    - ([0-9]{1,3}\\.) 0 fois puis 2 fois [0-9]+ -> 12
    - ([0-9]{1,3}\\.) 0 fois puis 1 fois [0-9]+ -> 1
    ...

    Bref je raconte surement des bêtises mais j'ai du mal à comprendre comment le matcher va fonctionner. Y a-t-il des regles?


    Du genre:

    - Est-ce que le match va essayé de constituer la plus grande chaine de caractère trouvée qui match l'expression?

    - Est-ce qu'il va renvoyer le premier match trouvé, sachant qu'il prend les expressions dans l'ordre (cad qu'il essaie de matcher ([0-9]{1,3}\\.) tant qu'il en trouve, puis ensuite passe au [0-9]+?)


    Bref la regex que j'ai utilisé arrive a me donner le résultat que je cherche (a savoir le nombre complet 123.456.789), cependant je préfère assurer mes arrières histoire de ne pas avoir de mauvaise surprise...


    Je suis loin d'être un pro des regex, ca vous semble être la bonne regex pour matcher un nombre de ce type?
    React-Hebdo - Newsletter pour se tenir à jour sur l'écosystème React

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Par défaut les quantificateurs sont gourmands (Greedy quantifiers). C'est à dire qu'il tenteront de prendre la chaine correspondante la plus grande.

    Tu peux inverser ce comportement avec les "reluctant quantifiers" qui sont plus réticent.


    a++

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    Pour la syntaxe et plus d'infos sur le sujet, tu peux te référer au tuto de Sun.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Java/Scala
    Inscrit en
    Octobre 2007
    Messages
    1 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Scala

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 086
    Points : 2 271
    Points
    2 271
    Par défaut
    Ok merci
    Super alors

    J'étais passé dessus en survolant mais j'avais pas trop compris a quoi ca servait ^^
    React-Hebdo - Newsletter pour se tenir à jour sur l'écosystème React

Discussions similaires

  1. Question sur un regex
    Par DevServlet dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 23/05/2008, 09h32
  2. Question sur les Regex. interdire une chaine
    Par cysboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/05/2007, 13h49
  3. Questions sur une Regex
    Par mpereg dans le forum Général Python
    Réponses: 7
    Dernier message: 09/03/2007, 19h50
  4. Question sur les regex, besoin d'une lumière
    Par Cladjidane dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/03/2007, 12h28
  5. [RegEx] questions sur regex
    Par zimotep dans le forum Langage
    Réponses: 4
    Dernier message: 04/10/2006, 14h28

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