2017-03-09 46 views
0

我在寻找创建合适的正则表达式的方法时遇到了麻烦,该正则表达式替换了与a-z,A-Z,0-9和|不同的字符串。如何创建替换字符的Python正则表达式?

到现在为止,我有:

re.sub(r'[\W_]+', '', s) 

这工作正常字母数字字符,但我也需要让管道工作(“|”)。有谁知道如何做到这一点?

举例来说,如果我有:

name&|surna.me|ag,e 

我需要这样的:从A-Z,A-Z,0-9和

name|surname|age 

回答

5

什么不同|。

你需要一个negated character class

s = re.sub(r'[^a-zA-Z0-9|]+', '', s) 

一个[开始字符类,^告诉正则表达式引擎,它应匹配比什么是在类中定义的其他任何东西,剩下的都是你的范围/字符。 ]关闭该类,并且+使其匹配1次或多次出现的所需字符。

regex demoPython demo

import re 
s = 'name&|surna.me|ag,e' 
s = re.sub(r'[^a-zA-Z0-9|]+', '', s) 
print(s) 
# => name|surname|age