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

Java Discussion :

RÉcupérer no à l'aide des regex


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut RÉcupérer no à l'aide des regex
    Bonjour à tous.

    Je veux récupérer le no de séquencede cette chaine la

    57344 <RECTANGLE> 200 161 268 184 </RECTANGLE>

    Pour le moment, j'ai ce pattern là

    Pattern p = Pattern.compile("<(.*)>(.*)</\\1>");

    Qui me récupère RECTANGLE 200 161 268 184 si je fais m.group(1) et m.group(2)

    Alors j'aimerais pouvoir récupérer le numéro avant <RECTANGLE>, Merci !

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 73
    Points : 179
    Points
    179
    Par défaut
    tu as essayé un truc du genre: "([^<]*)<([^>]*)>([^<]*)<" ?

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut
    Excellent ça fonctionne.

    J'ai une dernière interrogation.

    le m.group(3) me regroupe les 4 coordonnées entre les balises.

    Est-ce que il y a moyen de les séparer.

    Merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 73
    Points : 179
    Points
    179
    Par défaut
    m.group(3).split("\\s+")[i-1] devrait te rendre ta i ème coordonnée.
    (split te découpe ta string en un tableau), \s c'est n importe quel caractère blanc. + c'est pour dire qu'il t'en faut au moins un.

    Si ton group(3) commence par un blanc ça te décalera ton index, pour être sûr tu peux faire:

    m.group(3).replaceFirst("^\\s+", "").split("\\s+")[i-1]);

    Ce qui te supprime les premiers blancs avant de découper.

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut
    D'accord mais est-ce qu'il est possible de les séparer dans un groupe chacun

    3, 4, 5, 6

    Merci

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 73
    Points : 179
    Points
    179
    Par défaut
    La methode que je te donne permet de t affranchir du nombre de coordonnees que t auras ( imagine que tu aies un triange, ou un segment ...)

    Sinon t es dependant de ton format. Si t'as 3 coordonnees ca ne marchera plus.

    Si tu veux vraiment la recuperer avant ( bien que je ne voie pas l interet ), tu devrais pouvoir la trouver par toi meme, c est un combine de :
    "([^<]*)<([^>]*)>([^<]*)<"
    dans laquelle tu remplaces ([^>]*) par une regexp toute simple
    ( il te suffit de connaitre la classe pour matcher les numeriques: [0-9] )

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/09/2014, 22h42
  2. Réponses: 2
    Dernier message: 10/01/2012, 23h28
  3. Réponses: 3
    Dernier message: 24/10/2005, 16h32
  4. Réponses: 10
    Dernier message: 06/10/2005, 22h25
  5. Programmation a l'aide des propertysheet
    Par tonycalv dans le forum MFC
    Réponses: 7
    Dernier message: 12/06/2005, 13h45

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