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

JavaScript Discussion :

Récupérer un span et son contenu, dans un string [RegExp]


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut Récupérer un span et son contenu, dans un string
    Bonjour je cherche à construire une Regexp qui me permettrai de récupérer un élément <span> et son contenu dans une chaîne de caractères, mais uniquement cet élément <span>.
    Je m'explique :

    La chaine de caractères :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var uneChaine = '<span class="classeSpeciale">du contenu</span><span class="uneAutreClass">un autre contenu</span><div> encore du contenu</div>';
    Je voudrais récupérer uniquement '<span class="classeSpeciale">du contenu</span>';

    Voilà ce que j'ai fait mais cela me récupère '<span class="classeSpeciale">du contenu</span><span class="uneAutreClass">un autre contenu</span>'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var oRegContact = new RegExp('<span class="classeSpeciale">(.|\\s)*</span>',"gi");
    oRegContact.exec(uneChaine );
    Si quelqu'un a une solution, je suis preneur.
    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    pourquoi exec ?

    => match
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var uneChaine = '<span class="classeSpeciale">du contenu</span><span class="uneAutreClass">un autre contenu</span><div> encore du contenu</div>';
    var reg=/<span class="classeSpeciale">(.(?!(\/span>)))+<\/span>/
    alert(uneChaine.match(reg)[0])
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    T'as ça qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRegContact = new RegExp('(<span class="classeSpeciale">(?:.|\\n)*?</span>)',"gi");
    Par contre il ne faut pas que tu aies de <span> imbriqué donc les regex sont assez limitées dans ce contexte.

    Edit : il est préférable d'utiliser match comme y dit Spaffy.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut
    Merci pour vos réponses,

    La Regexp de Loceka est parfaite pour mon problème. Est ce qu'on pourrais m'expliquer la logique de cette regexp ?

  5. #5
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    En fait, par défaut (/!\ le comportement varie selon l'implémentation du parseur de regex) le .* te prendre la plus grande chaîne qui correspond à ta recherche.

    Donc la regex /.*a/ appliquée à la chaîne "ababa" va te retourner "abab".

    Pour inverser ce comportement, et donc prendre la plus petite chaîne correspondant à la recherche, il faut ajouter un ? derrière l'opérateur (+ ou *). Dans ce cas, la regex de tout à l'heure devient : /.*?a/ et appliquée à la même chaîne elle retrournera "a".

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

Discussions similaires

  1. Lire seulement le son contenu dans une AVI
    Par pointer dans le forum Delphi
    Réponses: 4
    Dernier message: 01/02/2007, 12h08
  2. Réponses: 3
    Dernier message: 21/11/2006, 12h35
  3. Jouer un son contenu dans un TMemoryStream
    Par francky23012301 dans le forum Delphi
    Réponses: 3
    Dernier message: 17/07/2006, 13h56
  4. Réponses: 5
    Dernier message: 27/05/2006, 12h06
  5. Ouvrir une feuille excel et mettre son contenu dans VB6
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 17/01/2006, 09h16

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