我有一个字符串作为
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(string)
Return string with all non-alphanumerics backslashed; this is useful if you want to match an arbitrary literal string that may have regular expression metacharacters in it.
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 内的反斜杠 + 字符替换匹配的字符会给你想要的输出。
关于python - 如何找到匹配项并使用 RegEx 更新它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28957761/