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 PHP Discussion :

Regex exclusion chaine [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Par défaut Regex exclusion chaine
    Bonjour,

    Je cherche à faire une regex qui récupère une chaine de caractère et qui s'arrête à l'occurence d'une chaine. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p>Le <b>mammouth</b> fait du vélo</p>
    J'aimerais récupérer la chaine : Le <b>mammouth</b> fait du vélo

    J'ai essayé l'expression régulière suivante, mais elle ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #<p>([^</p>]*)</p>#
    Merci !

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Plus simple :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = "#<p>(.+)</p>#";

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Par défaut
    Juste pour info
    Si tu veux te compliquer la tache tu peux également utiliser un parseur XML


  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Par défaut
    oui mais lorsque je fais un preg_match_all(), il me récupère toute la chaine entre deux <p> alors que je souhaite avoir toutes les chaines comprises entre les balises <p>.

    Merci de votre aide

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Par défaut
    Citation Envoyé par doogy Voir le message
    il me récupère toute la chaine entre deux <p>
    Citation Envoyé par doogy Voir le message
    alors que je souhaite avoir toutes les chaines comprises entre les balises <p>
    Toutes les chaines de ta page HTML ???
    Soit plus clair car les deux phrases signifie la meme chose pour moi !

  6. #6
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    C'est parce que les quantifieurs sont greedy par défaut.

    Ceci serait-il mieux (2 versions : une regex générique, une plus spécifique php) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $pattern = "#<p>(.+?)</p>#";
    $pattern = "#<p>(.+)</p>#U";

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Par défaut
    En effet je n'ai pas été très clair, je m'excuse !

    Cette regex convient parfaitement, je souhaitais que la regex s'arrête à chaque occurence de </p> trouvée.

    Merci beaucoup !

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

Discussions similaires

  1. [Regex] Encryptage chaine de caractères
    Par ouioui2000 dans le forum Langage
    Réponses: 13
    Dernier message: 11/09/2013, 18h58
  2. Select avec Regex (extraction chaine)
    Par tornade69 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 16/03/2012, 16h46
  3. Regex : Recherche chaine de caractère dans une autre chaine de caractère (Unix)
    Par framus.class dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 18/01/2011, 22h05
  4. Un Regex de chaine contenant des éèàç
    Par doc51 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 15/06/2009, 15h55
  5. Regex : entraire chaines entre 2 autres chaines
    Par avogadro dans le forum Général Dotnet
    Réponses: 9
    Dernier message: 15/09/2007, 15h14

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