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

正则匹配两字符串间无限重复模式:提取YM与末尾两位数字间内容

解决正则提取问题:捕获YM与末尾两位数字之间的内容

我来帮你搞定这个正则匹配的问题!

问题根源

你之前使用的正则 /([A-Z]+)([0-9a-z]+)([0-9]+)/ 之所以会错误匹配末尾的一位数字,核心原因是最后一组的 [0-9]+ 是贪婪匹配且没有锚定到字符串结尾——它只要求匹配至少一个数字,所以中间的 [0-9a-z]+ 会尽可能多的占用字符,直到剩下至少一个数字给最后一组,这就导致它会把末尾两位数字中的一位“吞”进中间组,只留一位给最后组,自然不符合你的需求。

正确的正则表达式

要精准捕获YM与末尾两位数字之间的内容,我们需要强制最后一组匹配恰好两位数字,并锚定到字符串结尾。针对你的场景,推荐两种写法:

写法1(精准匹配YM前缀)

^YM([0-9a-z]+)([0-9]{2})$
  • ^YM:严格匹配开头的"YM"前缀
  • ([0-9a-z]+):这就是你需要提取的目标内容(捕获组1)
  • ([0-9]{2})$:匹配末尾的两位数字,$ 确保这两位是字符串的最后部分,避免中间组“抢”走数字

写法2(兼容任意大写字母前缀)

如果你的数据集里前缀不只是YM,而是任意大写字母组合,可以用:

^([A-Z]+)([0-9a-z]+)([0-9]{2})$
  • 此时你需要提取的内容是捕获组2

测试验证

用你的两个例子测试:

  • 输入 YM10a15b5c27,捕获组(写法1的组1/写法2的组2)得到 10a15b5c,最后组得到 27
  • 输入 YM1b5c17,捕获组得到 1b5c,最后组得到 17
    完全符合你的需求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:38:16