python-3.x - 如何在 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">
解决方案
首先,您的正则表达式不正确。它只会匹配/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))
推荐阅读
- css - CSS显示表格在分隔边框之间添加空间
- django - Docker 映像未运行,数据库错误:django.db.utils.OperationalError 无法将主机名“postgres”转换为地址:名称或服务未知
- javascript - 如何根据firebase查询的结果有条件地返回一些东西?
- javascript - 用javascript在里面插入div
- c - Strtol 函数返回错误值
- angular - Native Script Angular 代码共享项目不创建节点模块目录,无法创建组件
- javascript - 在 setInterval 内创建一个精灵
- typescript - 输入'选择
' 不可分配给类型 'Partial ' 其中 TId 扩展了 keyof TTask - flutter - Flutter - 如果我添加了很多文本而不是它的长度,为什么我的文本会消失
- java - JDK 中已弃用的内容