Python字符串中的转义正则表达式特殊字符
Python是否有一个函数可以用来转义正则表达式中的特殊字符 例如,Python字符串中的转义正则表达式特殊字符,python,regex,string,escaping,Python,Regex,String,Escaping,Python是否有一个函数可以用来转义正则表达式中的特殊字符 例如,我“卡住了”:\应该变成我“卡住了”:\使用 在此重复: 关于转义(字符串) 返回所有非字母数字反斜杠的字符串;如果要匹配可能包含正则表达式元字符的任意文字字符串,这将非常有用 从Python 3.7开始,escape()已更改为仅转义对正则表达式操作有意义的字符。这并不难: def escapeSpecialCharacters ( text, characters ): for character in charac
我“卡住了”:\
应该变成我“卡住了”:\
使用
在此重复:
关于转义(字符串)
返回所有非字母数字反斜杠的字符串;如果要匹配可能包含正则表达式元字符的任意文字字符串,这将非常有用
从Python 3.7开始,escape()已更改为仅转义对正则表达式操作有意义的字符。这并不难:
def escapeSpecialCharacters ( text, characters ):
for character in characters:
text = text.replace( character, '\\' + character )
return text
>>> escapeSpecialCharacters( 'I\'m "stuck" :\\', '\'"' )
'I\\\'m \\"stuck\\" :\\'
>>> print( _ )
I\'m \"stuck\" :\
使用repr()[1:-1]。在这种情况下,不需要转义双引号。[-1:1]片段将从开头和结尾删除单个引号
>>> x = raw_input()
I'm "stuck" :\
>>> print x
I'm "stuck" :\
>>> print repr(x)[1:-1]
I\'m "stuck" :\\
或者你只是想逃避一个短语粘贴到你的程序中?如果是,请执行以下操作:
>>> raw_input()
I'm "stuck" :\
'I\'m "stuck" :\\'
我很惊讶没有人提到通过
re.sub()
使用正则表达式:
需要注意的重要事项:
- 在搜索模式中,包括
以及要查找的字符。 您将使用\
转义字符,因此需要转义 那也是\
- 在搜索模式周围加上括号,例如
,以便替换 模式可以在前面添加([\“])
时使用找到的字符\
执行:使用第一个括号中的组的值。)\1
r'([\“])前面的
表示它是一个原始字符串。原始字符串使用不同的 避开反斜杠的规则。要将r
作为普通字符串编写,您需要 将所有反斜杠加倍,然后写入([\“])
。使用原始字符串时更友好 你在写正则表达式'([\\“])'
- 在替换模式中,您需要转义
,以将其与 替换组前面的反斜杠,例如\
,因此\1
。写 作为一个普通的字符串,您需要r'\\\1'
-没有人想要这样“\1”
>>> escape = lambda s, escapechar, specialchars: "".join(escapechar + c if c in specialchars or c == escapechar else c for c in s)
>>> s = raw_input()
I'm "stuck" :\
>>> print s
I'm "stuck" :\
>>> print escape(s, "\\", ['"'])
I'm \"stuck\" :\\
如果您只想替换某些字符,可以使用以下方法:
import re
print re.sub(r'([\.\\\+\*\?\[\^\]\$\(\)\{\}\!\<\>\|\:\-])', r'\\\1', "example string.")
重新导入
打印re.sub(r'([\.\\+\*\?\[\^\]\$\(\)\{\\\\\!\\\\\\\\\\:\-]),r'\\\1',“示例字符串”。)
你认为什么是一个特殊的角色?完全取决于你的背景。如果反斜杠是字符之一
最好是第一个,则这些字符在字符串中通常是完全正确的!如果字符串是unicode,则这不起作用,因为在python3.4中,所有字符串都是unicode,您将有u,并且应该运行repr(x)[2:-1]
,不幸的是,这似乎根本不起作用。相反,print(repr(“我卡住了”)[1:-1])
printsI卡住了
。您可以使用regex模块而不是re。例如regex.escape(模式、字符串、仅特殊字符=True
>>> escape = lambda s, escapechar, specialchars: "".join(escapechar + c if c in specialchars or c == escapechar else c for c in s)
>>> s = raw_input()
I'm "stuck" :\
>>> print s
I'm "stuck" :\
>>> print escape(s, "\\", ['"'])
I'm \"stuck\" :\\
import re
print re.sub(r'([\.\\\+\*\?\[\^\]\$\(\)\{\}\!\<\>\|\:\-])', r'\\\1', "example string.")