0

如何制作一个python RegEx,它从文本中删除所有字符,除了:\d \w \s

我试过这样的事情:

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

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

4

1 回答 1

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

于 2013-04-25T17:40:29.857 回答