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)))