我有字符串'hello (new)'
,我想删除所有非数字和字母。一种方法是找到所有字母并加入它们:
>>> ''.join(re.findall(r'[a-zA-Z0-0]', 'hello (new)'))
'hellonew'
我将如何做相反的操作,即将所有非字符替换为''
?到目前为止,我已经:
>>> re.sub(r'^[a-zA-Z0-9]+', '', 'hello (new)')
' (new)'
但是有点不对。
答案 0 :(得分:1)
您应该改用否定的字符类,并删除前面的锚点:
re.sub(r'[^a-z0-9]+', '', 'hello (new)', re.IGNORECASE)
答案 1 :(得分:1)
您可以使用\W+
匹配任何非单词字符1次以上。
如果要保留与\ w匹配的下划线,则可以使用字符类[\W_]+
。
import re
print(re.sub(r'\W+', '', 'hello (new)'))
输出
hellonew