Ich habe eine große Anzahl von Dateien mit $ Log erweitert-Keyword-Text am Ende, die gelöscht werden müssen. Ich suche, ein vorhandenes Python 2.7-Skript zu modifizieren, um dies zu tun, aber kann die Regex nicht richtig arbeiten lassen.
Der Text aus dem Ende einer Datei wie folgt aussieht abzustreifen:
/*
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
*/
Ich möchte oben, einschließlich die Anker Kommentar /*
und */
und alles dazwischen gezeigt gesamten Text strippen.
schaute ich auf diese Fragen/Antworten und ein paar andere:
Python re.sub non-greedy mode ..
Der nächstgelegene ich in der Lage gewesen ist, mit zu bekommen:
content = re.sub(re.compile(r'\$Log:.*', re.DOTALL), '', content)
Welche Natürlich hinterlässt die Öffnung /*
.
folgende Worte gestrichen meine ganze Probe-Testdatei, da die Datei mit einem entsprechenden Kommentar öffnet (Ich dachte, die nicht gierige ?
Modifikator dies verhindern würde):
content = re.sub(re.compile(r'^/\*.*?\$Log:.*', re.DOTALL), '', content)
ich mit der Verwendung von re.MULTILINE ohne Erfolg experimentiert .
Wie kann ein Regex in Python definiert werden, um den gesamten $ Log-Kommentar zu erhalten - UND keinen der vorherigen Kommentare in der Datei?
ich habe noch einige Erläuterungen zu meiner Frage: machte Kommentar zu entfernendem allgemeinere, stellte fest, dass der Kommentar Anker '/ *' und ' */'und alles dazwischen muss entfernt werden, und frühere Kommentare in der Datei müssen unberührt bleiben. – Mutagon