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 :

Regex Java entre balises


Sujet :

Java

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

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 15
    Points
    15
    Par défaut Regex Java entre balises
    Bonjour, voila j'ai crée une regex pour avoir le contenue entre deux balise script de ce type <script type=blabla> bla bla bla <script> blablabla <script type=blabla> blu blu blu <script>
    J'ai effectué ce code:
    String regexFunction="<script.*?>(.*?)</script>";
    Pattern p=Pattern.compile(regexFunction, Pattern.DOTALL );
    Matcher m=p.matcher(aParser);
    System.out.println("Voici le resultat:");
    while(m.find())
    System.out.println(m.group(1));
    Mais cela me renvoie bla bla bla blu blu blu au lieux de juste bla bla bla, pourriez vous m'aider ?
    Cordialement.

  2. #2
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    <script type=blabla> bla bla bla <script> blablabla <script type=blabla> blu blu blu <script>
    Est-tu sûr que c'est la chaine que tu lui donnes ? Car ici il n'y a jamais de "</script>" comme dans ton pattern, donc il ne devrait rien matcher du tout.

    Toute fois si comme je le soupçonne, ta chaine ressemble plus à ça

    <script type=blabla> bla bla bla </script> blablabla <script type=blabla> blu blu blu </script>
    Ce qu'il t'affiche est normal puisqu’il match 2 fois (en rouge).

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

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Merci de ta réponse !
    Oui exact, je me suis trompé dans la chaine
    C'est bien <script type=blabla> bla bla bla </script> blablabla <script type=blabla> blu blu blu </script>
    Mais m.group(1) est sensé récupéré seulement la première occurence non ?
    Dans ce cas la comment je fait pour avoir juste bla bla bla ou juste blu blu blu ?

  4. #4
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Dans une expression régulière tu peux avoir plusieurs groupe

    <toto>(.*?)</toto>.*?<tata>(.*?)</tata>
    Ducoup m.group( 1 ) retournera ce qu'il y en entre les balises <toto>, et m.group( 2 ) ce qu'il y en entre les balises <tata>

    Par contre si tu as une chaine qui ressemble à

    <toto>blabla</toto>qsdlkjqsd<tata>blublu</tata><toto>blabla222</toto>qsdlkjqsd<tata>blublu222</tata>
    Le fait de boucler sur la chaine avec while(m.find()) fait que lors de la première itération
    - m.group( 1 ) = "blabla"
    - m.group( 2 ) = "blublu"

    et lors de la 2eme itération (puisque ton pttern match 2 fois)
    - m.group( 1 ) = "blabla222"
    - m.group( 2 ) = "blublu222"

    D'où ton résultat, il te suffit de faire ton traitement à chaque itération pour les différencier.

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

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Exact, enfaite ma solution marchais, mais vue que les deux réponse s'affichais à la suite je ne comprenais pas..
    Merci de m'avoir éclairer ! Bonne journée !

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

Discussions similaires

  1. [RegEx] Regex recuperation entre balise
    Par dashed dans le forum Langage
    Réponses: 2
    Dernier message: 31/03/2015, 13h00
  2. [XSD] type NULL entre balise existe?
    Par mauvais_karma dans le forum Valider
    Réponses: 3
    Dernier message: 10/04/2006, 13h29
  3. [debutant] extraire phrase entre balises
    Par debdev dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/06/2005, 14h00
  4. [Débutant] Dialogue Java entre les frames pour client HTML
    Par Carrel dans le forum Général Java
    Réponses: 4
    Dernier message: 03/06/2004, 11h39
  5. [C#] Placer fichier html entre balises DIV
    Par Febus dans le forum ASP.NET
    Réponses: 9
    Dernier message: 07/05/2004, 12h44

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