python - 如何找到匹配项并使用 RegEx 更新它?

标签 python regex string

我有一个字符串作为

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/

相关文章:

php - 正则表达式匹配得太早

php - 在 jQuery 中更改一堆 img 标签的属性是否比 PHP 更容易?

string - 如何从无界字符串中获取更小的字符串

python - 获取另一列中每个唯一值的前 2 个值

python - flask WTForms : validation InputRequired for at least one field

python - pandas - 将列转换为分钟值

根据条件替换 R 中字符串的第一个元素

python - 如何模拟异步代码调用的函数?

ruby-on-rails - 如何从 url 中删除随机多余的斜杠?

java - 如何在 Java 中比较字符串?