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

如何用正则表达式提取AX1/AX2前缀后的两位小数数字?

搞定这个很简单!你遇到的问题是原来的正则会把AX1里的1和后面的数字连起来当成11.74提取,我们只要明确跳过AX1/AX2这类前缀,同时兼容原来的Rot、Lon这类前缀就行。

方案1:兼容所有前缀场景(推荐)

用这个正则表达式就能完美解决:

(?:AX[12]|[A-Za-z]+)?(\d+\.\d{2})

细节解释:

  • (?:AX[12]|[A-Za-z]+)?:这是一个非捕获组(?:标记表示我们不需要提取这个部分),用来匹配两种可选前缀:
    • AX[12]:精准匹配AX1或AX2这两个特定前缀;
    • [A-Za-z]+:匹配任意长度的字母序列,对应你原来的Rot、Ams、Lon这类前缀;
    • 末尾的?表示这个前缀是可选的,让正则也能处理没有前缀的独立两位小数(如果有需要的话);
  • (\d+\.\d{2}):这是我们真正要捕获的目标,和你原来的规则一致——匹配1位或多位整数、小数点,加上固定两位小数。

测试你的目标字符串AX11.74 Rot1.26 AX21.28,会得到三个捕获结果:1.74、1.26、1.28,完全符合需求。

方案2:用正向后顾断言做更精准匹配

如果你的正则引擎支持正向后顾断言(比如Python 3.6+、JavaScript ES2018+、Java 9+等主流环境都支持),可以用这个更严谨的写法:

(?<=(?:AX[12]|[A-Za-z]+))(\d+\.\d{2})

细节解释:

  • (?<=(?:AX[12]|[A-Za-z]+)):正向后顾断言的作用是确保我们要提取的数字前面一定是AX1/AX2或者字母序列,这样就不会误匹配字符串中独立存在的两位小数(比如如果字符串里有随便写个1.23,这个正则就不会提取它);
  • 后面的(\d+\.\d{2})还是保留你原来的捕获规则。

这个方案适合需要严格限制提取条件的场景,避免不必要的匹配。

内容的提问来源于stack exchange,提问作者nilo de roock

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:27:42