import re
strings = [
'before remove after',
'remove after',
' remove',
'remove ',
' remove ',
'before remove',
'remove',
'before remove after',
'before remove after remove before',
'before remove after remove before remove',
'before remove after remove before remove ',
'after remove before before remove remove remove',
'remove remove remove '
]
pattern = r"(?:(?<=\S)( )+)? *remove *(?(1) (?=\S)(?!remove\b))"
for s in strings:
print("'{0}' ==> '{1}'".format(s, re.sub(pattern, r"\1", s)))
aW1wb3J0IHJlCgpzdHJpbmdzID0gWwogICAgJ2JlZm9yZSByZW1vdmUgYWZ0ZXInLAogICAgJ3JlbW92ZSBhZnRlcicsCiAgICAnIHJlbW92ZScsCiAgICAncmVtb3ZlICcsCiAgICAnIHJlbW92ZSAnLAogICAgJ2JlZm9yZSByZW1vdmUnLAogICAgJ3JlbW92ZScsCiAgICAnYmVmb3JlICAgcmVtb3ZlICAgYWZ0ZXInLAogICAgJ2JlZm9yZSByZW1vdmUgICAgIGFmdGVyIHJlbW92ZSBiZWZvcmUnLAogICAgJ2JlZm9yZSByZW1vdmUgYWZ0ZXIgcmVtb3ZlIGJlZm9yZSByZW1vdmUnLAogICAgJ2JlZm9yZSByZW1vdmUgYWZ0ZXIgcmVtb3ZlIGJlZm9yZSAgIHJlbW92ZSAgICcsCiAgICAnYWZ0ZXIgcmVtb3ZlIGJlZm9yZSBiZWZvcmUgcmVtb3ZlICAgcmVtb3ZlIHJlbW92ZScsCiAgICAncmVtb3ZlIHJlbW92ZSAgICByZW1vdmUgICAnCl0KcGF0dGVybiA9IHIiKD86KD88PVxTKSggKSspPyAqcmVtb3ZlICooPygxKSAoPz1cUykoPyFyZW1vdmVcYikpIgpmb3IgcyBpbiBzdHJpbmdzOgogICAgcHJpbnQoIid7MH0nID09PiAnezF9JyIuZm9ybWF0KHMsIHJlLnN1YihwYXR0ZXJuLCByIlwxIiwgcykpKQ==