Мне не нравятся регулярные выражения, но мне нравится Python, поэтому я бы, наверное, написал это как
>>> s = ':foo [bar]'
>>> ''.join(c for c in s if c.isalnum() or c.isspace())
'foo bar'
>>> ''.join(c for c in s if c.isalnum() or c.isspace()).split()
['foo', 'bar']
. '. .Jin идиома немного странная, я признаю, но вы можетепочти все остальное на английском: «соединяйте каждый символ для символов в s, если символ является буквенно-цифровым или символ пробелом, а затем разделяйте его».
Либо, если вы знаете, что символы, которые вы хотитеУдалить всегда будет снаружи, и слово будет по-прежнему разделено пробелами, и вы знаете, что они есть, вы можете попробовать что-то вроде
>>> s = ':foo [bar]'
>>> s.split()
[':foo', '[bar]']
>>> [word.strip(':[]') for word in s.split()]
['foo', 'bar']