Regex exclure une chaine de caracteres

psikopit Messages postés 3 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 9 janvier 2011 - 30 déc. 2010 à 14:51
psikopit Messages postés 3 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 9 janvier 2011 - 9 janv. 2011 à 10:52
Bonjour à tous ;)
Je suis débutant en python et j'essaie de faire un code tout simple qui matche les **En gras** d'un texte pour les remplacer par des En gras html :)
Jusque la rien de compliquer j'utilise ce code python/regex:
line = re.sub('(\*\*)([^*]+)(\*\*)','\\2',line)

Cela fonctionne très bien sauf si l'on écrit **Le texte en * gras**
Le code ne match plus les ** cela vient du [^*]+ (cela veut bien dire n'importe quel caractère sauf *?) le problème est qu'il faudrait exclure la chaine ** et non * mais je 'y parvient pas :/ merci de votre aide :)

P.S.: c'est moitier python/regex alors je ne sais pas trop où poster :/

2 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
31 déc. 2010 à 07:34
ta regexp est trop gourmande (greedy)

te manque un ? pour la rendre ungreedy (non -gourmande) :

\*\*(.+?)\*\*

du coup, .+ essaiera de récupérer le moins de caractères possibles...


selon le type d'entrées que tu as, remplaces . par [\s\S] si besoin

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Rejoignez-nous