假設我想用一個字符(例如\
)預先計算特定表達式的所有出現位置。有沒有辦法在不使用組的情況下引用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