python正则表达式,删除除\ d \ s \ w之外的所有内容

时间:2013-04-25 17:38:14

标签: python regex

如何制作一个python RegEx,除了:\d \w \s

之外,它会删除除文本之外的所有字符

我试过这样的事情:

import re
re.sub(r'\W*\D*\S*', '', 'this is my<\n test <+-,1345.;>')

但是这给了我一个空字符串。我想得到:this is my test ,1234.。我还想保留,.

1 个答案:

答案 0 :(得分:5)

使用倒置字符类:

re.sub(r'[^., \t\w]*', '', 'this is my<\n test <+-,1345.;>')

演示:

>>> re.sub(r'[^., \t\w]*', '', 'this is my<\n test <+-,1345.;>')
'this is my test ,1345.'

\W\S\D太宽。例如\D匹配\w匹配的大部分内容,删除\D中的任何内容都会删除太多内容。任何不是数字的东西都要删除,但你想保留字母和点数。

我将\s替换为文字空格和标签,因为您要删除换行符(也是空格),我添加了.,以便保留这些换行符。 \d也不需要\w\d是{{1}}的超集。