在下面的代码中,字符串" Graph"正在替换匹配的正则表达式:
htmlText = re.sub("[0-9]*/index.html", 'Graph', htmlText, re.MULTILINE|re.DOTALL)
但问题是,我想在“图形”之前添加到匹配的'[0-9]*/index.html'
表达式的开头,而不是替换它。
答案 0 :(得分:2)
您希望捕获匹配项(通过用parens包围正则表达式),然后使用MSDN(在替换字符串前通过\1
)对其进行反向引用(通过r
)防止反斜杠被视为转义字符:
In [1]: import re
In [2]: htmlText = "5/index.html"
In [3]: re.sub("([0-9]*/index.html)", r'Graph\g<1>', htmlText, re.MULTILINE|re.DOTALL)
Out[3]: 'Graph5/index.html'
修改:将r'Graph\1'
更改为r'Graph\g<1>'
以上,因为如果有人在后向引用后跟另一个数字的情况下使用此答案,则更可靠 - 请参阅docs {{ 3}}引用:
等替换中不含糊不清
\g<2>
因此等同于\2
,但在\g<2>0
注意:上面的示例使用Python 2.7.6。