在python中的正则表达式的开头插入字符串

时间:2016-07-01 06:14:28

标签: python regex

在下面的代码中,字符串" Graph"正在替换匹配的正则表达式:

htmlText = re.sub("[0-9]*/index.html", 'Graph', htmlText, re.MULTILINE|re.DOTALL)

但问题是,我想在“图形”之前添加到匹配的'[0-9]*/index.html'表达式的开头,而不是替换它。

1 个答案:

答案 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。