如何创建替换字符的Python Regex?

GHM*_*GHM 0 python regex string python-3.x

我在找到创建一个正确的正则表达式的方法时遇到了麻烦,该正则表达式替换了与az,AZ,0-9和|不同的字符串.

到现在为止,我有:

 re.sub(r'[\W_]+', '', s)
Run Code Online (Sandbox Code Playgroud)

这适用于字母数字字符,但我还需要使它适用于管道("|").有谁知道如何制作它?

例如,如果我有:

name&|surna.me|ag,e
Run Code Online (Sandbox Code Playgroud)

我需要它像:

name|surname|age
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

任何与az,AZ,0-9和|不同的东西.

你需要一个否定的角色类:

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

A [启动字符类,^告诉正则表达式引擎它应该匹配除了类中定义的内容以外的任何内容,其余的是你的范围/字符.]关闭该类并+使其匹配一次或多次出现的所需字符.

请参阅正则表达式演示Python演示:

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