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

如何使用正则表达式将多个不同匹配模式替换为同一内容

问题分析
  • 缺少依赖导入:代码未导入re模块,直接运行会抛出名称错误。
  • 正则语法错误:你写的[0-9],Hi]属于错误的字符组用法,方括号包裹的字符组仅能匹配单个字符,无法匹配Hi这种多字符序列,多余的逗号和未闭合的方括号也会导致匹配逻辑完全偏离预期,只会匹配单个数字、逗号、H、i、]字符。
  • 匹配规则错误:没有区分手机号的长数字和年龄的短数字,原写法会把所有数字都替换,不符合预期里保留24岁数字的需求。
  • 替换逻辑错误:直接指定替换值为单个X,不管匹配到的内容长度是多少,都只会替换成1个X,无法实现Hi替换为2个X、手机号替换为对应长度X的效果。
修复方案

使用|分隔多个匹配规则,分别匹配Hi和11位及以上的长数字(对应手机号),再通过替换函数生成对应长度的X字符串:

import re
txt = "Hi, my phone number is 089992654231. I am 24 years old."

def processString3(txt):
    # 匹配Hi或者11位及以上的连续数字
    txt = re.sub(r'Hi|\d{11,}', lambda match: 'X' * len(match.group()), txt)
    print(txt)

processString3(txt)

运行后输出:

XX, my phone number is XXXXXXXXXXXX. I am 24 years old.

如果需要严格匹配你示例中手机号替换为10个X的效果,可以把正则中的数字匹配规则调整为\d{12},替换逻辑固定返回10个X即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:06:04