用正则表达式替换所有非字母/数字

时间:2019-10-31 22:37:34

标签: python regex

我有字符串'hello (new)',我想删除所有非数字和字母。一种方法是找到所有字母并加入它们:

>>> ''.join(re.findall(r'[a-zA-Z0-0]', 'hello (new)'))
'hellonew'

我将如何做相反的操作,即将所有非字符替换为''?到目前为止,我已经:

>>> re.sub(r'^[a-zA-Z0-9]+', '', 'hello (new)')
' (new)'

但是有点不对。

2 个答案:

答案 0 :(得分:1)

您应该改用否定的字符类,并删除前面的锚点:

re.sub(r'[^a-z0-9]+', '', 'hello (new)', re.IGNORECASE)

答案 1 :(得分:1)

您可以使用\W+匹配任何非单词字符1次以上。

如果要保留与\ w匹配的下划线,则可以使用字符类[\W_]+

Python demo

import re

print(re.sub(r'\W+', '', 'hello (new)'))

输出

hellonew