Python字符串替换基于不在RegEx中的字符

Mat*_*odd 17 python regex

是否可以创建一个reqex,找到NOT不是特定集的字符?

而不是将一堆字符列入黑名单并替换它们,我会更容易允许某个集合并替换不在该集合中的字符.

我的设置如下:[.a-zA-Z0-9]

我想做这样的事情:

clean_filename = re.sub(r'([.a-zA-Z0-9])', "_", filename)
Run Code Online (Sandbox Code Playgroud)

显然这段代码会替换我想要保留的字符,有没有办法替换那组中的字符?

Thi*_*ter 23

是的,使用^否定"修饰符":r'[^.a-zA-Z0-9]'