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][string] replaceAll bogué ? [Trucs & Astuces]


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 11
    Points : 12
    Points
    12
    Par défaut [regex][string] replaceAll bogué ?
    bonjour,

    si "toto" est une variable de type "String", pourquoi :

    toto.replaceAll("}","b") fonctionne bien

    toto.replaceAll("{","a") plante et retourne cette erreur :
    java.util.regex.PatternSyntaxException: Illegal repetition {

    de même, toto.replaceAll("a{a","a") plante et retourne cette erreur :
    java.util.regex.PatternSyntaxException: Illegal repetition near index 0
    a{a
    ^

    c'est interdit de remplacer les { dans les string ? ça ne m'arrange pas du tout :-(
    le travail se passe sous j2se 1.4.0 dans une jsp / tomcat 4.1.18

    merci pour tout élément de réponse.

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 133
    Points
    133
    Par défaut
    en fait {} represente un choix d'élement dans regex ... En d'autre terme du dois protégé le { par un \

    tu dois faire attention a sa, consulte la javadoc de regex et tu comprendra que { est un caractere de controle

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2002
    Messages : 125
    Points : 150
    Points
    150
    Par défaut
    le replaceAll fonctionne avec des expressions régulières, essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto.replaceAll("a\\{a","a")
    le caractère \ désactive des caractères spéciaux des ER.
    ne ré-inventez pas la roue, allez chercher dans les Commons de Jakarta

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 30
    Points : 32
    Points
    32
    Par défaut
    yep car '{' dans une expression reg ça veut dire un truc et donc lors de l'analyse de ta regExp le parser de regexp attend un '}' si tu as une '{'


    La force Luc, la force...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 11
    Points : 12
    Points
    12
    Par défaut [résolu] [string] replaceAll bogué ?
    merci à vous 3 je comprend mieux... c'est tout de même troublant qu'avec "}" il n'y ait pas de pb

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

Discussions similaires

  1. Regex et String.replaceAll
    Par Shaika-Dzari dans le forum Langage
    Réponses: 4
    Dernier message: 28/01/2009, 15h37
  2. [String] ReplaceAll et ponctuation
    Par Mascotte dans le forum Langage
    Réponses: 6
    Dernier message: 01/03/2007, 15h01
  3. Probleme String replaceAll
    Par viscere dans le forum Langage
    Réponses: 13
    Dernier message: 03/07/2006, 09h22
  4. [String] [ReplaceAll] comment despecialiser ?
    Par DeeJimy dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 12/08/2005, 16h07
  5. [String][replaceAll][Expression régulière]Remplacement multi
    Par cpr0 dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 09/04/2004, 16h40

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