如何制作一个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
。