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

求可转换kbt-y102_系列格式字符串的正则表达式

解决方案:覆盖所有场景的正则替换

我来帮你搞定这个正则转换的问题!先梳理下核心需求,然后给出能完美覆盖所有测试场景的方案:

核心思路拆解

我们可以把整个转换拆成4个简单的分步操作,既容易理解也方便调试,完全覆盖你列出的所有情况:

步骤1:移除前缀

首先把开头的kbt-y102_及之前的所有内容清除,只保留需要处理的核心部分:

^.*kbt-y102_

替换为空字符串即可。

步骤2:替换数字前缀为N

把999或9999统一替换成N,不管后面跟着的是字母还是下划线结构:

9999?

替换为N。

步骤3:清理数字前的冗余0

把_000直接替换为空,这样N_0001v就会变成N1v,正好符合需求:

_000

替换为空字符串。

步骤4:清理-s后的冗余0

把-s00替换为-s,让-s001r变成-s1r:

-s00

替换为-s。


完整代码示例(以Python为例)

import re

def transform_target_string(s):
    # 1. 移除前缀内容
    s = re.sub(r'^.*kbt-y102_', '', s)
    # 2. 替换999/9999为N
    s = re.sub(r'9999?', 'N', s)
    # 3. 去掉_000前缀
    s = re.sub(r'_000', '', s)
    # 4. 简化-s00为-s
    s = re.sub(r'-s00', '-s', s)
    return s

测试所有示例场景

让我们验证你给出的所有测试用例:

  • kbt-y102_9999_0001v-s001r → N1v-s1r ✅
  • kbt-y102_9999_0002r-s001v → N2r-s1v ✅
  • kbt-y102_9999_0001v → N1v ✅
  • kbt-y102_9999_0002r → N2r ✅
  • kbt-y102_999a → Na ✅
  • kbt-y102_999aa → Naa ✅
  • kbt-y102_9999a → Na ✅
  • kbt-y102_9999aa → Naa ✅

所有场景都完美匹配需求!

可选:单正则一次性处理(适合工具类场景)

如果你的使用场景只能支持单正则替换,可以用这个带捕获组的版本:

^.*kbt-y102_(9999?)(?:_000(\d+[a-z])|(-s00(\d+[a-z]))|([a-z]+))?

替换模板为:

N$2$4$5

不过分步处理的方式更直观,不容易因为捕获组顺序出错,更推荐日常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:10:24