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

Regex需求:从字符串中提取指定格式版本号(去除冗余后缀)

正则提取特定版本号解决方案

需求

从以下字符串中提取X.XRX-EVO格式的目标版本:

21.4R3.13-EVO -- Required 21.4R3-EVO
24.1R13.13-EVO -- Required 24.1R13-EVO
21.4R2-S1-20190223000107.0-EVO -- Required 21.4R2-EVO
19.4R11-S1-20190223000107.0-EVO -- Required 19.4R11-EVO

需忽略核心版本(如21.4R3)与-EVO之间的所有冗余内容(如.13、-S1-20190223000107.0)。

问题诊断

你之前使用的正则[0-9]+.[0-9]+[A-Z][0-9]+仅匹配了核心版本前缀,没有关联末尾的-EVO,也未处理中间冗余内容。

解决方案

捕获组拼接方案

^(\d+\.\d+R\d+).*(-EVO)$
  • 各部分解释:
    • ^:锚定字符串开头,避免匹配字符串中间的无关片段
    • (\d+\.\d+R\d+):捕获核心版本段(如21.4R3、24.1R13)
      • \d+:匹配1个及以上数字
      • \.:匹配点号(必须转义,避免正则中.匹配任意字符的默认行为)
      • R:匹配固定大写字母R
    • .*:匹配中间所有冗余内容(任意字符任意长度)
    • (-EVO)$:捕获末尾的-EVO,锚定字符串结尾
  • 使用方式:将捕获组1和组2拼接(如\1\2或$1$2,具体取决于使用的工具),即可得到目标结果。

替换式解决方案(更高效)

如果使用替换操作,可直接删除冗余部分:

  • 匹配正则:(\d+\.\d+R\d+).*(-EVO)
  • 替换为:$1$2
    执行替换后,原始字符串会直接转换为目标版本号。

直接匹配核心前缀方案

若只需提取核心前缀再手动拼接-EVO,可使用:

\d+\.\d+R\d+(?=.*-EVO)

这个正则会匹配所有后面跟着-EVO的核心版本段,提取后拼接-EVO即可得到完整目标。

测试验证

用上述正则处理示例字符串,均可得到符合要求的结果:

  • 21.4R3.13-EVO → 21.4R3-EVO
  • 21.4R2-S1-20190223000107.0-EVO → 21.4R2-EVO

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:15:36