2017-03-09 7 views
0

a-z、A-Z、0-9および|と異なる文字列を置き換える適切な正規表現を作成する方法を見つけるのに問題があります。文字を置き換えるPython正規表現を作成するには?

今まで、私が持っている:

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

これは、英数字のため正常に動作しますが、私はまた、(「|」)、パイプのために働くようにする必要があります。誰もそれを作る方法を知っていますか?例えば

、私が持っている場合:

name&|surna.me|ag,e 

を私はそれが好き必要があります-Z、A-Z、0-9とは異なる

name|surname|age 

答えて

5

何でも|を。

あなたはnegated character classが必要になります。

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

A [は、文字クラスを開始^が、それはクラス内で定義されているもの以外のものと一致する必要があります正規表現エンジンに指示し、残りはあなたの範囲です/ chars。 ]はクラスを閉じ、+は必要な文字が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 
関連する問題