J'ai un grand nombre de fichiers avec le mot-clé $ Log à la fin qui doit être supprimé. Je cherche à modifier un script python 2.7 existant pour le faire mais je ne peux pas faire fonctionner correctement l'expression rationnelle.
Le texte à bande de la fin d'un fichier ressemble à ceci:
/*
one or more lines of ..
.. possible text
$Log: oldfile.c,v $
Revision 11.4 2000/01/20 19:01:41 userid
a bunch more text ..
.. of unknown number of lines
*/
Je veux dépouiller tout le texte ci-dessus, y compris les ancres de commentaire /*
et */
et tout le reste.
Je regardais ces questions/réponses et quelques autres:
Python re.sub non-greedy mode ..
Le plus proche que je suis en mesure d'obtenir est avec:
content = re.sub(re.compile(r'\$Log:.*', re.DOTALL), '', content)
Lequel bien sûr laisse derrière l'ouverture /*
.
Voici supprimé mon fichier de test d'échantillon entier car le fichier commence par un commentaire correspondant (je pensais que le modificateur ?
non gourmand empêcherait cela):
content = re.sub(re.compile(r'^/\*.*?\$Log:.*', re.DOTALL), '', content)
J'ai expérimenté avec l'aide re.MULTILINE sans succès .
Comment une expression régulière peut-elle être définie en Python pour récupérer l'ensemble du commentaire $ Log - ET aucun des commentaires précédents dans le fichier?
J'ai ajouté quelques éclaircissements à ma question: a fait le commentaire à enlever plus général, a noté que les points d'ancrage de commentaire '/ *' et ' */'et tous les éléments intermédiaires doivent être supprimés, et les commentaires antérieurs du fichier doivent rester intacts. – Mutagon