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

Java正则表达式:如何从字符串中提取指定格式的版本号?

正则提取版本号解决方案

需求示例

原始字符串与目标提取结果对应:

0.6.9b-version - 0.6.9b
v0.6.99 - 0.6.99
v01.23.97 - 01.23.97
v01.23.97a-release - 01.23.97a
v1.23.97a-release - 1.23.97a

正确正则方案

方案1:精准匹配分隔符后的版本号

针对原始字符串中版本号位于-后方的特点,使用带正向断言的正则,确保只提取分隔符后的目标内容:

(?<=\s*-\s*)\d+(?:\.\d+)*(?:[a-z])?
  • (?<=\s*-\s*):正向预查,匹配任意数量空格包裹的-,兼容原始字符串中-前后空格数量不一致的情况
  • \d+:匹配版本号开头的至少一位数字
  • (?:\.\d+)*:匹配0个或多个.数字格式的子版本段(非捕获组,避免多余分组)
  • (?:[a-z])?:可选匹配末尾的小写字母后缀,兼容无字母的版本号

方案2:直接匹配符合格式的版本号

如果不需要依赖分隔符位置,直接提取所有符合版本格式的内容(会跳过开头的v前缀):

\d+(?:\.\d+)*(?:[a-z])?

原正则问题分析

你之前使用的(\d[\w.()]+?[a-z])存在两个核心问题:

  1. 强制要求版本号末尾必须有小写字母,导致无字母的版本号(如0.6.99)无法匹配
  2. 没有限定匹配范围,会错误匹配原始字符串中左侧带后缀(如-version)的部分

内容的提问来源于stack exchange,提问作者rastorguev.i.a

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:35:10