2010-11-10 5 views
0

Quelle est la regex pour une telle tâche? -> remplacer "[[...:" par "[["Quelle est la bonne regex pour cela?

C'est-à-dire, je veux remplacer * du texte * à l'intérieur [[...: avec [[.

Le problème avec mon code est qu'il supprime * texte * à l'intérieur du premier [[]]

>>> string = "Some text here [[dont remove me]] and some extra text [[remove me:and let this]] here." 
>>> clean = re.sub(r'\[\[.+:', '[[', string) 
>>> clean 
'Some text here [[and let this]] here.' 
>>> 

Répondre

1
re.sub(r'\[\[[^:\]]+:', '[[', string) 

[^:\]] est utilisé au lieu de . pour contraindre que la substance à supprimer est limitée dans un marque.

+0

Merci, ça fonctionne très bien)) – Gusto

0

Au lieu de . utiliser une expression qui exclut : et la fermeture ]]:

r'\[\[(?:[^:\]]|\][^\]])*:' 
+0

celui-ci fonctionne aussi, mais KennyTM pour la première. Merci – Gusto

Questions connexes