假设我想用一个字符(例如\
)预先计算特定表达式的所有出现位置。有没有办法在不使用组的情况下引用re.sub中的完整匹配表达式?
在sed
,它看起来像这样。
echo '__^^^%%%__FooBar' | sed 's/[_^%]/\\&/g'
注意,&
字符用来表示原始匹配的表达式。
我查看了regex docs和regex howto,但我没有看到与可用于替换匹配表达式的&
字符的等效项。
我发现的唯一解决方法是使用一组额外的()
来对表达式进行分组,然后引用该组,如下所示。
import re
line = "__^^^%%%__FooBar"
print re.sub("([_%^$])", r"\\\1", line)
有引用整个匹配的表达式没有额外的组创建一个干净的方式?
你的眼睛真的很好。我完全错过了该段末尾的那句话。 :)几分钟后会接受。 – merlin2011 2014-10-02 07:23:53