是否有一种简单的方法可以从给定字符串中删除与给定正则表达式匹配的所有字符?我知道在Ruby中我可以使用gsub:
>> key = "cd baz ; ls -l"
=> "cd baz ; ls -l"
>> newkey = key.gsub(/[^\w\d]/, "")
=> "cdbazlsl"
Run Code Online (Sandbox Code Playgroud)
Python中的等效函数是什么?
到目前为止,答案都集中在与Ruby代码做同样的事情,这与你在问题的英文部分提出的内容完全相反:代码删除了DO匹配的字符,而你的文本要求
从给定字符串中删除无法匹配的所有字符的简单方法
例如,假设你的RE的模式是r'\d{2,}'"两个或更多个数字" - 所以不匹配的部分将是所有非数字加上所有单个孤立的数字.按照文本要求删除不匹配的部分也很容易:
>>> import re
>>> there = re.compile(r'\d{2,}')
>>> ''.join(there.findall('123foo7bah45xx9za678'))
'12345678'
Run Code Online (Sandbox Code Playgroud)
编辑:好的,OP现在澄清了这个问题(他确实意味着他的代码,而不是他的文字,说,现在文本也是正确的;-)但我要留下答案是为了完整性(其他答案暗示re.sub是正确的问题,因为它现在是正确的).我意识到你可能意味着你在Ruby代码中"说"了什么,而不是你在英文文本中所说的,但是,以防万一,我认为我最好完成答案集! - )