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

Langage Java Discussion :

Aide Expression régulière


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 119
    Par défaut Aide Expression régulière
    Bonjour,

    J'ai un problème avec une expression régulière.

    Je voudrait récupérer une balise html "<a>". Voici la chaine qui me sert pour mon test unitaire :

    String html = "coucou <a xxxxxxxxxaxxxxxxxxx /a> fdsfldsjfdlsk";
    Voici mon pattern :

    this.patternALink = Pattern.compile("<a [^(/a>)]+");
    Voici le résultat qui m'est retourné :
    <a xxxxxxxxx
    Le programme est bloqué par le premier "a", Je n'arrive pas à trouver l'expression régulière pour "prend tous les caractère suivante sauf si c'est suivi de / puis de a puis de >" . (il fait un OU)

    Merci !
    Stéphane

  2. #2
    Expert éminent
    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 : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tout simplement ceci, devrait marcher

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    La signification de l'expression régulière est : "Capture ce qui commence par '<a ' et les caractères qui se suivent sauf l'un des suivants '(', '/', 'a', '>' ou ')'

    Je tenterai un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern.compile("<\\s*a(.+?)<\\s*/\\s*a\\s*>")
    EDIT : Comme je me suis fait griller j'améliore :p
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 119
    Par défaut
    J'ai testé les deux fonctionnent .
    Tu t'es fait griller, mais tu gère les espaces donc c'est encore mieux
    Merci à tout les deux .

  5. #5
    Expert éminent
    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 : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pour info, il est interdit de mettre un espace entre < et a justement. pareil entre le / et le a. Par contre, effectivement, on peux en mettre un entre a et >

    Donc je corrige aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern.compile("<a(.+?)</a\\s*>")

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 119
    Par défaut
    En effet tchize_, ta solution est meilleurs !

    Je vous avoue, j'ai du mal à comprendre le sens du point d'interrogation.

    Merci beaucoup !
    Stéphane

  7. #7
    Expert éminent
    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 : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    mis derrière un + ou un *, cela signifie qu'on fait un capture réticente. On prend le moins de caractère possible. Ca évite d'englober /a> dans le ".+". Si on ne l'avais pas mis, et qu'on avait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="blabla">blabla</a><a href="blibli">blibli</a>
    le .+ correspondrais à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href="blabla">blabla</a><a href="blibli">blibli<
    alors qu'avec le .+? ca correspond à
    et

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

Discussions similaires

  1. Aide Expression Régulière
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 31/03/2011, 15h49
  2. aide expression régulière
    Par neg12 dans le forum Langage
    Réponses: 7
    Dernier message: 07/03/2011, 16h39
  3. aide expression régulière
    Par viny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2008, 18h55
  4. aide expression régulières
    Par Invité dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 11/04/2008, 15h02
  5. Aide expression régulière
    Par As2piK dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 02/10/2007, 10h33

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