首页 > 解决方案 > 如何在 Python 中使用 re.sub

问题描述

请帮我用 re.sub() 替换特定的字符串

'<a href="/abc-10063/" target="_blank">'

需要是

'<a href="./abc-10063.html" target="_blank">'

下面写了一个脚本

import re
test = '<a href="/abcd-10063/" target="_blank">'
print(re.sub(r'/abcd-[0-9]','./abcd-[0-9].html', test))

返回

<a href="./abcd-[0-9].html0063/" target="_blank">

标签: python-3.x

解决方案


首先,您的正则表达式不正确。它只会匹配/abcd-1
您需要将您的正则表达式更改为/abcd-[0-9]+. 添加 a+将匹配所有数字。同样要匹配尾随/,您需要将其添加到您的正则表达式中。
所以最终的正则表达式将是/abcd-[0-9]+/.

现在要重用匹配的内容以替代您需要在正则表达式中创建组。因为我们只想重用/abcd-[0-9]+而不是/. 放入/abcd-[0-9]+组中,如下所示:(/abcd-[0-9]+)/.

现在我们可以\1在替换中使用匹配组,其中 1 是组号。如果您想使用第二组,您将使用\2.

所以你的最终代码将是:

import re
test = '<a href="/abcd-10063/" target="_blank">'
print(re.sub(r'(/abcd-[0-9]+)/', r'.\1.html', test))

推荐阅读