import re
pattern = r"\s+\w+\s?(?::|\(\s*([^()]+)\s*\)|\[\s*([^]\[]+)\s*])\s*"
items = [
";or, art1 : art2 art3",
";or, art1 ( art2 art3 )",
";or, art1 [ art2 art3 ]",
"SAD; Happy; ING:train coca",
"SAD; Happy; ING(train coca)",
"SAD, Happy, ING[train coca]"
]
for item in items:
print(re.sub(pattern, r' \1\2', item))
aW1wb3J0IHJlCnBhdHRlcm4gPSByIlxzK1x3K1xzPyg/Ojp8XChccyooW14oKV0rKVxzKlwpfFxbXHMqKFteXVxbXSspXHMqXSlccyoiCml0ZW1zID0gWwogICAgIjtvciwgYXJ0MSA6IGFydDIgYXJ0MyIsCiAgICAiO29yLCBhcnQxICggYXJ0MiBhcnQzICkiLAogICAgIjtvciwgYXJ0MSBbIGFydDIgYXJ0MyBdIiwKICAgICJTQUQ7IEhhcHB5OyBJTkc6dHJhaW4gY29jYSIsCiAgICAiU0FEOyBIYXBweTsgSU5HKHRyYWluIGNvY2EpIiwKICAgICJTQUQsIEhhcHB5LCBJTkdbdHJhaW4gY29jYV0iCl0KCmZvciBpdGVtIGluIGl0ZW1zOgogICAgcHJpbnQocmUuc3ViKHBhdHRlcm4sIHInIFwxXDInLCBpdGVtKSk=