Sie die folgende regex verwenden. Die (\S)
wird in Gruppe 1 jedes Zeichen erfassen, das kein Leerzeichen ist. Da es ein konsumierendes Submuster ist, wird keine (
am String-Start gefunden (es muss ein Zeichen vor einem (
sein).
Die Backreferences sind mit einem Backslash in Python definiert (oder mit \g<n>
Syntax, um sie eindeutig zu machen).
Beachten Sie, dass auch am Anfang einer Zeichenkette ein (
anzupassen (ein Leerzeichen vor den ersten (
in einem String hinzuzufügen), verwendet r'(?<!\s)\('
regex (mit einem nicht-verbrauchenden Unter-Pattern - eine negative Lookbehind (?<!\s)
, die sicher, es macht ist kein Leerzeichen vor einem (
):
re.sub(r"(?<!\s)\(", r' (', "(some text)") # => " (some text)"
Siehe Python demo:
import re
print(re.sub(r"(\S)\(", r'\1 (', "(some text)")) # => (some text)
print(re.sub(r"(\S)\(", r'\1 (', "Text(some text)")) # => Text (some text)
print(re.sub(r"(?<!\s)\(", r' (', "(some text)")) # => (some text)
die Verwendung von rohem String Bitte beachten Sie, wörtlichen s, um sowohl die Regex- als auch die Regex-Ersetzung zu deklarieren (dies hilft, viele unerwartete Probleme zu vermeiden). Siehe What exactly is a “raw string regex” and how can you use it?
Verwenden Sie in Python '\ 1' Stil Rückverweise mit einem Raw-String-Literal. Und Sie haben keine Capture-Gruppen, so dass Sie '\ 1' hier überhaupt nicht verwenden können. –
'line = re (r '(? anubhava
@anubhava: Es hängt auch davon ab, ob ein Leerzeichen eingefügt werden soll, wenn '(' ist bei der string start. –