2011-11-13 3 views
-1

J'ai un fichier avec la grammaire suivante:Python regex pour correspondre et supprimer un modèle spécifique

<whitespace_sequence><string><whitespace_sequence><--More--><whitespace_sequence><string_sequence><newline> 

En utilisant Python (2.4), je voudrais supprimer la séquence:

"<whitespace_sequence><--More--><whitespace_sequence>" from the above grammar. 

I utilise le modèle regex suivant:

x = re.compile("(\s+)("--More--")(\s+)") 

mais cela ne correspond pas à la séquence que je dois supprimer.

+3

Les chaînes d'échantillons sont bien plus utiles que les grammaires improvisées. – Tomalak

+0

Est-ce vraiment le code que vous avez utilisé? Cela déclencherait une exception NameError. – interjay

Répondre

1

Il semble que le problème avec votre expression régulière est les guillemets. Sans eux, il fonctionne très bien:

>>> sample = ' string --More-- anotherstring \n' 
>>> import re 
>>> re.search(r'(\s+)(--More--)(\s+)', sample).groups() 
(' ', '--More--', ' ') 

FWIW, voici une excellente ressource pour le développement d'une regex directement à partir d'une chaîne exemple: http://txt2re.com/

Une autre bonne ressource pour en savoir plus sur les expressions régulières est: http://www.regular-expressions.info/

Questions connexes