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

如何仅替换字符串中特定位置的匹配字符?

替换字符串中指定出现次数的字符

原始目标字符串:

Would you like some tea?

需求1:替换第2、3次出现的o为0

最终结果:

Would y0u like s0me tea?

实现方式(Python)

方法1:基于字符位置列表修改

original_str = "Would you like some tea?"
char_list = list(original_str)
# 收集所有'o'的索引位置
o_indices = [idx for idx, char in enumerate(char_list) if char == 'o']

# 替换第2、3个'o'(对应列表索引1、2,因为从0开始计数)
for pos in o_indices[1:3]:
    char_list[pos] = '0'

result = ''.join(char_list)
print(result)  # 输出: Would y0u like s0me tea?

方法2:正则表达式回调计数

import re

original_str = "Would you like some tea?"
replace_count = 0

def replace_target_o(match):
    nonlocal replace_count
    replace_count += 1
    # 仅在第2、3次匹配时替换为'0'
    return '0' if replace_count in (2, 3) else match.group()

result = re.sub(r'o', replace_target_o, original_str)
print(result)  # 输出: Would y0u like s0me tea?

需求2:替换第一个和最后一个出现的o为0

最终结果:

W0ould you like s0me tea?

实现方式(Python)

方法1:基于字符位置列表修改

original_str = "Would you like some tea?"
char_list = list(original_str)
o_indices = [idx for idx, char in enumerate(char_list) if char == 'o']

if o_indices:  # 确保存在'o'字符
    # 替换第一个和最后一个'o'
    char_list[o_indices[0]] = '0'
    char_list[o_indices[-1]] = '0'

result = ''.join(char_list)
print(result)  # 输出: W0ould you like s0me tea?

方法2:正则表达式回调计数

import re

original_str = "Would you like some tea?"
# 先统计所有'o'的数量
total_o = len([m for m in re.finditer(r'o', original_str)])
replace_count = 0

def replace_target_o(match):
    nonlocal replace_count
    replace_count += 1
    # 替换第一个或最后一个匹配的'o'
    return '0' if replace_count == 1 or replace_count == total_o else match.group()

result = re.sub(r'o', replace_target_o, original_str)
print(result)  # 输出: W0ould you like s0me tea?

内容的提问来源于stack exchange,提问作者JorensM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:44:51