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

求匹配等号分隔动态数字块的正则:提取指定位置数字

正则提取指定数字片段方案

完全可以实现你的需求,以下是针对性的正则表达式及使用说明:

核心需求拆解

  • 左侧数字:提取前6位之后、最后4位之前的部分(若左侧长度不足10位,即6+4,提取结果为空;若长度在7-9位,提取6位之后的所有内容)
  • 右侧数字:提取第7位之后的所有数字(若右侧长度不足7位,提取结果为空)

正则实现方案

1. 单独提取左侧目标片段

用于匹配等号左侧的数字字符串:

(?<=^\d{6})\d*(?=(?(?<=\d{10,})\d{4}$|$))
  • 解释:
    • (?<=^\d{6}):正向断言,确保匹配位置在开头6个数字之后
    • \d*:匹配任意长度的数字(即目标片段)
    • (?=(?(?<=\d{10,})\d{4}$|$)):条件断言,若左侧总长度≥10位,则必须以4位数字结尾;否则直接匹配到字符串结尾

2. 单独提取右侧目标片段

用于匹配等号右侧的数字字符串:

(?<=^\d{7})\d*$
  • 解释:
    • (?<=^\d{7}):正向断言,确保匹配位置在开头7个数字之后
    • \d*$:匹配从该位置到结尾的所有数字,若右侧长度不足7位则匹配结果为空

3. 一次性匹配整个字符串并捕获两个目标

如果需要同时处理整个数字=数字格式的字符串,可使用命名捕获组一次性获取两个目标:

^(\d{6})(?P<left_target>\d*)(?(?=\d{4}=)\d{4}|)=(?:\d{7})(?P<right_target>\d*)$
  • 解释:
    • (?P<left_target>\d*):捕获左侧目标片段
    • (?P<right_target>\d*):捕获右侧目标片段
    • 条件分支确保左侧长度不足10位时也能正常匹配,不会因为缺少最后4位而失败

示例验证

针对你给出的示例:

  • 输入:12345678999999=654784651321
    • 左侧目标:7899(前6位123456,最后4位9999,中间部分)
    • 右侧目标:51321(前7位6547846之后的部分)
  • 输入:4567894135=456789211
    • 左侧目标:空(左侧长度为10位,前6位+最后4位刚好占满,无中间部分)
    • 右侧目标:211(前7位4567892之后的部分)

内容的提问来源于stack exchange,提问作者Daniel Bednář

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:06:21