我有一个字符串
a = "hello i am stackoverflow.com user +-"
现在,我想转换字符串中的引号和引号和空格除外的转义字符。所以我的预期输出是:
a = "hello i am stackoverflow\.com user \+\-"
到目前为止,我所做的是找到一个字符串中除空格和双引号之外的所有特殊字符,使用
re.findall(r'[^\w" ]',a)
现在,找到所有必需的特殊字符后,我想更新字符串。我什至尝试过,re.sub
但是它替换了特殊字符。反正我能做到吗?
使用re.escape
。
>>> a = "hello i am stackoverflow.com user +-"
>>> print(re.sub(r'\\(?=[\s"])', r'', re.escape(a)))
hello i am stackoverflow\.com user \+\-
re.escape(字符串)
返回所有非字母数字加反斜杠的字符串;如果您想匹配其中可能包含正则表达式元字符的任意文字字符串,这将很有用。
r'\\(?=[\s"])'
匹配之前所有存在的反斜杠,以空格或双引号引起来。用空字符串替换匹配的反斜杠将为您提供所需的输出。
或者
>>> a = 'hello i am stackoverflow.com user "+-'
>>> print(re.sub(r'((?![\s"])\W)', r'\\\1', a))
hello i am stackoverflow\.com user "\+\-
((?![\s"])\W)
捕获所有非单词字符,但不捕获空格或双引号。在组索引1内用反斜杠+字符替换匹配的字符将为您提供所需的输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句