What you need is a negative lookbehind.
pattern = re.compile(r'(?<!-)word')
result = pattern.sub(lambda x: "match", "-word- word")
To cite the documentation:
(?<!...)
Matches if the current position in the string is not preceded by a match for ....
So this will only match, if the word-break
is not preceded with a minus sign -
.
If you need this for the end of the string you'll have to use a negative lookahead which will look like this: (?!-)
. The complete regular expression will then result in: (?<!-)word(?!-)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…