2017-03-09 24 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