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 :

Regex : récuperer une chaine entre deux guillemets anglais(")


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 29
    Points : 24
    Points
    24
    Par défaut Regex : récuperer une chaine entre deux guillemets anglais(")
    Bien voila je viens de m'initier aux expressions régulières.
    Je souhaite ainsi récuperer une expression entre guillemets du genre <<"blabla">>

    Soit la chaine p <<"le chien est mort">>
    Si je définis mon pattern par "\"le chien est mort\""
    évidemment je récupere <<"le chien est mort">>

    j'ai pu lire que le caractère * remplacait " 0, 1 ou plusieurs caractères"
    en toute logique je pourrais donc remplacer <<le chien est mort>> par *

    hors, un pattern définit par "\"*\"" me renvoie


    bref je m'y perd...

    enfin j'ai tout de même trouvé une alternative à mon probleme :
    Pattern.compile("\".{0,}\"")
    mais j'aimerai tout de même comprendre pourquoi l'usage du caractère joker * "ne marche pas"



    beaucoup de guillemets dans ce thread... désolé, j'espere que je ne confuse personne !

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par Phonatacid Voir le message
    or un pattern définit par "\"*\"" me renvoieenfin j'ai tout de même trouvé une alternative à mon probleme : Pattern.compile("\".{0,}\"")
    Tu as bien évidemment oublié le point dans ton expression rationnelle (et pourtant tu y as bien pensé dans l'expression suivante) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern.compile("\".*\"")

    Tu pourrais également rechercher, entre les deux guillemets, une chaîne ne comportant pas de guillemet (plutôt qu'une chaîne comportant n'importe quel caractère) de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern.compile("\"[^\"]*\"")

  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 804
    Points
    48 804
    Par défaut
    * n'est pas un caractère joker. Ca dit juste "0 ou plusieurs fois". C'est clairement marque dans la javadoc sur les pattern ainsi que dans plusieurs tutoriels que tu trouvera sur ce site. Donc ton expression devrait être soit

    soit

    suivant que tu veuille ou non autoriser les " à l'intérieur de la quote.

  4. #4
    Débutant Avatar de hb2ee
    Inscrit en
    Mars 2009
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 157
    Points : 78
    Points
    78
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String s = "\"le chien est mort\"";
            String s1 = s.replace("\"", "");
    il n'y a pas plus simple que ça .

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 104
    Points : 64
    Points
    64
    Par défaut
    Bonjour,
    je me permet d'up ce sujet

    Je dois recup la valeur contenu entre "".
    La chaîne d'entrée est de type : abdfbzuiebfub="xxx" et je veux recup le xxx

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    String regexp =  "\"(.*)\"";
    		Matcher matcher = Pattern.compile(regexp).matcher(chaine);
    		if(matcher.matches()) {
    			System.out.println(true);
    		}
     
    		while(matcher.find()) {
    			System.out.println("find : "+matcher.group());
    		}
    Donc déjà je ne comprend pas pourquoi il ne rentre pas dans le match alors qu'il devrait le match, et ensuite dans le find j'ai bien la valeur mais elle contient les "". Et j'aimerais la valeur sans "".

    J'ai fait pas mal de tests, je n'arrive pas trop à m'en sortir

    Toute aide est la bienvenue

    Merci !

  6. #6
    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 804
    Points
    48 804
    Par défaut
    matches vérifie dans l'entiereté de la chaine, alors que find cherche la prochaine sous chaine qui correspond.

    Pour avoir la parenthèse, c'est

Discussions similaires

  1. récuperer une chaine entre deux crochets
    Par anizlewan dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 01/07/2014, 22h26
  2. Réponses: 6
    Dernier message: 17/02/2010, 19h48
  3. [RegEx] Récupérer le contenu d'une chaine entre deux séparateurs
    Par soulryo dans le forum Langage
    Réponses: 2
    Dernier message: 13/08/2008, 14h17
  4. [RegEx] Récuperer une chaîne entre deux tags
    Par tixweb dans le forum Langage
    Réponses: 12
    Dernier message: 23/04/2007, 12h46
  5. REGEXP : recupérer une chaine entre deux autres chaines
    Par dude666 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/08/2006, 09h23

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