在python中使用正则表达式

在python中使用正则表达式,python,regex,Python,Regex,我有以下问题。 我想转义python字符串中的所有特殊字符 str='eFEx-x?k=;-' re.sub("([^a-zA-Z0-9])",r'\\1', str) 'eFEx\\1x\\1k\\1\\1\\1' str='eFEx-x?k=;-' re.sub("([^a-zA-Z0-9])",r'\1', str) 'eFEx-x?k=;-' re.sub("([^a-zA-Z0-9])",r'\\\1', str) 我在这里似乎赢不了。”\1'表示特殊字符,我想在此特殊字

我有以下问题。 我想转义python字符串中的所有特殊字符

str='eFEx-x?k=;-'

re.sub("([^a-zA-Z0-9])",r'\\1', str)

'eFEx\\1x\\1k\\1\\1\\1'

str='eFEx-x?k=;-'

re.sub("([^a-zA-Z0-9])",r'\1', str)

'eFEx-x?k=;-'

re.sub("([^a-zA-Z0-9])",r'\\\1', str)

我在这里似乎赢不了。”\1'表示特殊字符,我想在此特殊字符之前添加一个“\”。但是使用\1删除了它的特殊含义,\\1也没有帮助。

使用
r'\\\1'
。这是一个反斜杠(转义,表示为
\\
),后跟
\1

要验证此操作是否有效,请尝试:

str = 'eFEx-x?k=;-'
print re.sub("([^a-zA-Z0-9])",r'\\\1', str)
这张照片是:

eFEx\-x\?k\=\;\-

我想这就是你想要的。当解释器输出
'eFEx\\-x\\?k\\=\\\;\\-';出现双反斜杠是因为解释器引用了它的输出,除非您使用
print

尝试添加另一个反斜杠:

s = 'eFEx-x?k=;-'
print re.sub("([^a-zA-Z0-9])",r'\\\1', s)

为什么不使用
re.escape()


为什么上一个版本不起作用?如果“特殊字符”是指“对正则表达式有特殊意义的字符”,那么这肯定是您想要的
str.encode('string-escape')
可能是另一种可能性,如果它是“Python字符串文本的特殊字符”。谁知道什么是“特别的”?>>re.sub(([^a-zA-Z0-9]),r'\\\1',str)'eFEx\\-x\\\?k\\\=\\\;\\\-'>>str='eFEx-x?k=;-'>>打印参考文件(“[a-zA-Z0-9]),r'\\\1',str)eFEx \-x \?k \=\-
str = 'eFEx-x?k=;-'
re.escape(str)

'eFEx\\-x\\?k\\=\\;\\-'