2016-04-15 24 views
1

Ich versuche herauszufinden, wie Sie diese [###:###] vom Anfang einer Zeichenfolge [###:###]other random text mit Regex-Substitution entfernen.Reguläre Ausdrücke: Entfernen von [#####: #####] aus einer Zeichenfolge

Ich habe versucht:

line = '[123:456]othertext' 
print re.sub(r'^[\d*:\d*],'',line) 

Aber das läßt die hinter Klammern: '[]othertext'

Das Problem hier ist, dass Klammern traditionell eine Regex Capture-Gruppe zeigen. Also habe ich dann versucht, ignorieren sie mit der Escape-Taste \\:

line = '[123:456]othertext' 
print re.sub(r'^\\[\d*:\d*\\],'',line) 

Und dies zeigte keine Veränderung an den String: '[123:456]othertext'

Wie richtig formatiert ich den regulären Ausdruck?

+3

Einzelschrägstriche Siehe sollte in rohen Stringliterale verwendet werden. –

+0

Was ist falsch mit 'line.rpartition (']') [- 1]'? – styvane

+0

@ user3100115 Das würde für das von mir bereitgestellte Beispiel funktionieren, aber viele der Strings, die ich teile, verwenden Klammern am Anfang und am Ende. In diesem Fall ist die genaue Antwort erfolgreich. –

Antwort

2

In Raw-String-Literalen sollten einfache Backslashes verwendet werden, um spezielle Regex-Metazeichen und Kurzzeichen-Zeichenklassen zu umgehen.

Verwenden

import re 
line = '[123:456]othertext' 
print re.sub(r'^\[\d*:\d*\]','',line) 
#    ^ ^
# => othertext 

Python demo