如何制作一个python RegEx,它从文本中删除所有字符,除了:\d \w \s
我试过这样的事情:
import re
re.sub(r'\W*\D*\S*', '', 'this is my<\n test <+-,1345.;>')
但这给了我一个空字符串。我想得到:this is my test ,1234.。我也想保留,和.
使用倒置字符类:
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。