【发布时间】:2014-10-02 15:29:44
【问题描述】:
假设我想在所有出现的特定表达式前面加上一个字符,例如\。
在sed 中,它看起来像这样。
echo '__^^^%%%__FooBar' | sed 's/[_^%]/\\&/g'
注意& 字符用于表示原始匹配表达式。
我查看了regex docs 和regex howto,但我没有看到可用于替换匹配表达式的& 字符的等效项。
我发现的唯一解决方法是使用一组额外的() 对表达式进行分组,然后引用该组,如下所示。
import re
line = "__^^^%%%__FooBar"
print re.sub("([_%^$])", r"\\\1", line)
有没有一种简洁的方法来引用整个匹配的表达式而无需创建额外的组?
【问题讨论】: