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

Python Discussion :

re.sub : traitement de toutes les occurences dans le cas d'utilisation de groupes


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Par défaut re.sub : traitement de toutes les occurences dans le cas d'utilisation de groupes
    Bonjour,

    J'aimerais parser une chaîne de caractère et transformer des caractères simples en balises html.
    Par exemple **texte** doit devenir <strong>texte</strong>

    J'utilise donc (var contient le texte) :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    var = re.sub('(.*)\*\*(.*)\*\*(.*)', '\\1<strong>\\2</strong>\\3', var);

    Le problème c'est que dans le cas d'un texte où il y a plusieurs couples de ** séparés par du texte, seule la dernière paire est transformée.

    Une solution pourrait être d'utiliser une boucle comme ca par exemple :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while var.count('**')>1:
    		var = re.sub('(.*)\*\*(.*)\*\*(.*)', '\\1<strong>\\2</strong>\\3', var);

    Cependant j'aimerais savoir si il y a un moyen en changeant la syntaxe de l'expression régulière de transformer toutes les occurences qui remplissent les conditions.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Ta regex capture tout ce qui se trouve avant et après les **, ce qui n'est pas le comportement attendu, puisque toi tu ne veux que ce qu'il y a entre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var = re.sub(r'\*\*(.*)\*\*', '<strong>\\1</strong>', var)
    P.S.:Le point-virgule n'est pas nécessaire en fin de ligne, c'est seulement un séparateur pour mettre plusieurs instructions sur une ligne.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Par défaut
    Merci pour la réponse.

    Par contre avec une chaîne comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    on peut **avoir** plusieurs **mots** en **gras** par **ligne**
    Ca me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    on peut <strong>avoir** plusieurs **mots** en **gras** par **ligne</strong>
    au lieu de remplacer touts les groupes de deux **

  4. #4
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    essaye en mode 'radin'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var = re.sub(r'\*\*(.*?)\*\*', '<strong>\\1</strong>', var)
    J'ai pas test, mais ça devrait fonctionner

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Par défaut
    Ca marche merci beaucoup

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

Discussions similaires

  1. [RegEx] Regex : récupérer toutes les occurences dans une chaîne
    Par Poulpynette dans le forum Langage
    Réponses: 1
    Dernier message: 10/10/2006, 10h14
  2. Retrouver toutes les occurences dans un memo
    Par johweb dans le forum Delphi
    Réponses: 2
    Dernier message: 09/06/2006, 14h44
  3. Réponses: 2
    Dernier message: 17/06/2005, 23h03
  4. replace() qui s'applique sur toutes les occurences
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/03/2005, 11h27
  5. Réponses: 6
    Dernier message: 06/10/2004, 10h41

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