2016-09-18 10 views
1

In Python hat, ich versucheRegex - ersetzen Wort plus oder Klammern

text = re.sub(r'\b%s\b' % word, "replace_text", text) 

zu ersetzen, um ein Wort mit etwas Text zu tun. Verwenden Sie re statt text.replace nur zu ersetzen, wenn das ganze Wort mit \b übereinstimmt. Problem tritt auf, wenn Zeichen wie +, (, [ etc in Word vorhanden sind. Zum Beispiel +91xxxxxxxx.

Regex behandelt + als Platzhalter für einen oder mehrere und bricht mit Fehler. sre_constants.error: nothing to repeat. Gleiches gilt auch für (.

Konnte eine Lösung dafür finden, nachdem Sie ein wenig gesucht haben. Gibt es einen Weg?

Antwort

2

Nur re.escape(string) verwenden:

word = re.escape(word) 
text = re.sub(r'\b{}\b'.format(word), "replace_text", text) 

Es ersetzt alle kritischen Zeichen mit besonderer Bedeutung in regex Muster mit ihrer Flucht Formen (z \+ statt +).


Nur eine Nebenbemerkung: Die Formatierung mit dem Prozent (%) Zeichen veraltet und wurde durch die Methode von Strings .format() ersetzt.