You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用re.sub替换字符串中带数字的指定部分并保留原数字

如何使用re.sub替换字符串中带数字的指定部分并保留原数字

嗨,我明白你的问题啦!你想把字符串末尾的数字_F替换成对应的数字_DO,但之前的写法没保留住那个变量数字,问题出在替换字符串里你写了固定的[0-9]_DO,这只是普通文本,不会引用你捕获到的数字哦。

正确的思路是利用正则的捕获组功能:先把需要保留的数字捕获下来,然后在替换的时候引用这个捕获到的内容,具体做法如下:

基础版(匹配单个数字)

如果你的数字是单个字符(比如3_F),可以这样写:

import re
result = re.sub(r"([0-9])_F$", r"\1_DO", 'sdsd3_F')
print(result)  # 输出结果:sdsd3_DO

解释一下:

  • r"([0-9])_F$"里的([0-9])是第一个捕获组,专门匹配并保存单个数字;_F$确保只匹配字符串末尾的_F。
  • 替换字符串r"\1_DO"里的\1就是引用第一个捕获组里保存的数字,再拼接上_DO,这样就保留了原数字。

进阶版(匹配多位数字)

如果数字可能是多位(比如123_F),只需要把正则里的[0-9]改成[0-9]+,就能匹配1个或多个数字:

import re
result = re.sub(r"([0-9]+)_F$", r"\1_DO", 'sdsd123_F')
print(result)  # 输出结果:sdsd123_DO

另外要注意,在Python里最好用原始字符串(前面加r)来写正则和替换字符串,这样可以避免转义字符带来的问题。

备注:内容来源于stack exchange,提问作者Bogaso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 10:04:50