fork download
  1. import re
  2.  
  3. strings = [
  4. 'before remove after',
  5. 'remove after',
  6. ' remove',
  7. 'remove ',
  8. ' remove ',
  9. 'before remove',
  10. 'remove',
  11. 'before remove after',
  12. 'before remove after remove before',
  13. 'before remove after remove before remove',
  14. 'before remove after remove before remove ',
  15. 'after remove before before remove remove remove',
  16. 'remove remove remove '
  17. ]
  18. pattern = r"(?:(?<=\S)( )+)? *remove *(?(1) (?=\S)(?!remove\b))"
  19. for s in strings:
  20. print("'{0}' ==> '{1}'".format(s, re.sub(pattern, r"\1", s)))
Success #stdin #stdout 0.02s 9504KB
stdin
Standard input is empty
stdout
'before remove after' ==> 'before after'
'remove after' ==> 'after'
' remove' ==> ''
'remove ' ==> ''
' remove ' ==> ''
'before remove' ==> 'before'
'remove' ==> ''
'before   remove   after' ==> 'before after'
'before remove     after remove before' ==> 'before after before'
'before remove after remove before remove' ==> 'before after before'
'before remove after remove before   remove   ' ==> 'before after before'
'after remove before before remove   remove remove' ==> 'after before before'
'remove remove    remove   ' ==> ''