Ну так почитай
основы.
Во-первых, используй r-строки, чтобы не натыкаться на проблемы с символом
\
.
Во-вторых, изучи зарезервированные символы регулярных выражений, а именно:
( ) [ ] ^ $ . ? * +
. Если тебе нужен этот символ как просто символ, его надо экранировать! Т.е. если тебе нужно совпадение с символом
?
, надо писать
\?
.
В-третьих, для поиска символа из указанного набора используются квадратные скобки, т.е.
[abc]
совпадёт с одним символом из указанных: a, b или c. Для задания диапазона можно сделать так:
[a-z]
. Это зачастую короче.
В-четвёртых, для поиска символа НЕ из указанного набора используется такой синтаксис:
[^abc]
В-пятых, есть заранее заданные наборы. Например,
\w
описывает словесные символы (буквы, цифры и подчёркивание),
\d
описывает цифры, и т.д. Аналогично,
\W
и
\D
описывают всё кроме словесных символов и цифр, соотв.
Тогда у тебя будет два варианта
Если подчёркивание - не проблема:
re.sub(r'\W', '', 'test:_:test', re.I) # даст test_test
Если подчёркивание тоже нужно убрать:
re.sub(r'[\W_]', '', 'test:_:test', re.I) # даст testtest