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 :

Regex avec le taux


Sujet :

Collection et Stream Java

  1. #1
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut Regex avec le taux
    Bonjour,

    J'ai essaye d'utiliser regex pour les taux avec ceci



    public Pattern conventionRates = Pattern.compile("^([^ ]{3}) (([^ ]{3}) | ([^ ]{6})) ([0-9]+)([^ ])([^ ]*)([ ]*)(.*)");

    public String convention(String s)
    {
    Matcher matcherRates = conventionRates.matcher(s);
    if (matcherRates.find())
    {
    String currency = matcherRates.group(1);
    String type = matcherRates.group(2);
    Integer i = Integer.valueOf(matcherRates.group(3));
    String unit = matcherRates.group(4));
    String pageNumber = matcherRates.group(5);
    String extraTypeInfo = matcherRates.group(7);

    return currency + "_" + type + "_" + i.toString() + unit;
    }
    else
    {
    throw new RunTimeException(s + " does not match index format!!");

    }

    }

    Ca marche avec les chaines

    EUR LIB 6M AM
    USD CMS 10Y PM

    mais ca ne marche pas avec
    EUR LIBSTR 6M AM
    USD CMSSTR 10Y PM

    Avez-vous une idee comment modifier l'expression regex pour que ca marche avec les patterns LIB ou LIBSTR ....?

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Essaie ce pattern :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern.compile("^(\\w{3})\\s(\\w{3}|\\w{6})\\s(\\d+\\w+)\\s*(.*)");

  3. #3
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Merci,

    J'ai modifie mon pattern
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    Pattern.compile("^([^ ]{3}) ([^ ]{3})[^ ]* ([0-9]+)([^ ])([^ ]*)([ ]*)(.*)");
    
    en ajoutant dans le 2me groupe et ca marche

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Mouais. Dans ce contexte, les [^kekchose] ne sont pas recommandés car il peut s'agir de n'importe quel caractère sauf une espace. C'est à dire qu'un TAB est acceptable, tout comme une espace insécable, etc. M'enfin, c'est pas mon code, et je ne devrai pas l'entretenir.

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

Discussions similaires

  1. Appliquer regex avec parenthèse capturantes sur SELECT
    Par vallica dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/02/2008, 12h34
  2. Calcul facture avec différents taux de TVA
    Par Koopa55 dans le forum Excel
    Réponses: 4
    Dernier message: 23/01/2008, 10h01
  3. [RegEx] Regex avec condition
    Par yudao dans le forum Langage
    Réponses: 6
    Dernier message: 29/05/2007, 15h08
  4. REGEX avec variable
    Par Mat_F dans le forum Langage
    Réponses: 3
    Dernier message: 21/07/2006, 19h24
  5. Problème de Regex ... avec un point
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2005, 10h26

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