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

API standards et tierces Java Discussion :

java.util.regex Class Pattern: expression régulières chiffres romains


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Points : 22
    Points
    22
    Par défaut java.util.regex Class Pattern: expression régulières chiffres romains
    Je cherche a trouver les chiffres romains de 1 à 9 avec cette expression régulière mais cela ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Pattern p = Pattern .compile("IX | IV | V? I (0,3)");
    Matcher m = p.matcher(chaine);
    String sResult= "";
     
    while (m.find()){
        sResult = (chaine.substring(m.start(), m.end()));
        break;
    }
    Je pense que cela vient du V? I (0,3) car si V peut être null et I à 0 il va me retourner chaine vide... Avez vous une idée ?

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    Essaye avec l'expression régulière suivante:


  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    vous devez mettre des parenthèses et retirer les espace inutiles, sinon la signification de votre regexp est toute autre!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Pattern p = Pattern .compile("(IX)|(IV)|(V?I{0,3})");
    Matcher m = p.matcher(chaine);
    String sResult= "";
     
    if (m.find()){
        sResult = m.group();
    }

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 38
    Points
    38
    Par défaut
    Oui mais l'expression retourne un match pour une chaine de caractère vide.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    ouais ben tu met I à 1 minimum et tu rajoute le V tout seul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Pattern p = Pattern .compile("(IX)|(IV)|V|(V?I{1,3})");
    Matcher m = p.matcher(chaine);
    String sResult= "";
     
    if (m.find()){
        sResult = m.group();
    }

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 38
    Points
    38
    Par défaut
    oui, c'est ce que j'avais dit plus haut et on est bien d'accord

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    nan, ton expression régulière exige un I au début et à la fin, il lui manque ses parenthèses

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Points : 22
    Points
    22
    Par défaut
    Merci pour vos réponses:
    Mais en ajoutant le V comme tu le propose:
    Pattern p = Pattern .compile("(IX)|(IV)|V|(V?I{1,3})");

    Si on a VII, il va retourner V.

    Il faudrait peut être mettre (VI{0,3}) et quelque chose pour trouver les I sans le V genre ¨^V I{1,3} ...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Points : 22
    Points
    22
    Par défaut
    Voilà avec cela je pense que sa devrait fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern p = Pattern.compile("(IX)|(IV)|(VI{0,3})|[^V](I{1,3})");

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Points : 22
    Points
    22
    Par défaut
    Sinon le code que tu proposais en mettant le V en dernière position cela devrait fonctionner aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern p = Pattern .compile("(IX)|(IV)|(V?I{1,3})|(V)");
    Sinon pour être sur de ne pas prendre un mauvais cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern p = Pattern .compile("(IX)|(IV)|(VI{0,3})|[^V](I{1,3})[^V]");

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Points : 22
    Points
    22
    Par défaut
    Non ma solution avec le ^V ne semble pas fonctionner.

Discussions similaires

  1. java.util.regex.Pattern et ThreadLocal
    Par mickael.camelot dans le forum Langage
    Réponses: 5
    Dernier message: 21/12/2011, 10h28
  2. [java.util.regex.Pattern] Regex : contrôler le nombre d'accolades
    Par jmini dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 01/12/2009, 10h33
  3. Expression régulière chiffres et virgules
    Par johweb dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/06/2008, 21h51
  4. ResourceBundle - java.util.regex.pattern
    Par babalastar dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 14/02/2008, 14h43
  5. [Performance] IndexOf() ou java.util.regex ?
    Par scifire dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2006, 19h16

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