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

正则表达式新手求助:提取字符串前四组可变位数数字

Hey there! 作为正则新手能花两天时间钻研问题,这份韧劲必须点个赞👍 针对你需要从特定格式字符串中提取前四组数字的需求,我给你整理了四个精准的正则表达式,完全适配你的数字组_数字组_数字组_数字组_S2......模板:

正则表达式方案

每组正则都针对目标数字组的位置设计,逻辑清晰,新手也能快速理解:

  • 提取第一组数字(示例中的38)
    正则:^(\d+)(?=_)
    解释:^锚定字符串开头,(\d+)捕获一或多个连续数字(不管位数多少),(?=_)是正向预查,确保后面紧跟着下划线但不会把下划线包含到结果里。

  • 提取第二组数字(示例中的285)
    正则:^\d+_(\d+)(?=_)
    解释:^\d+_跳过开头的第一组数字和分隔下划线,(\d+)捕获第二组数字,同样用(?=_)确保后面是下划线,精准定位。

  • 提取第三组数字(示例中的4461)
    正则:^\d+_\d+_(\d+)(?=_)
    解释:跳过前两组数字和对应的两个下划线,(\d+)直接捕获第三组数字,(?=_)验证后续的下划线分隔符。

  • 提取第四组数字(示例中的186)
    正则:^\d+_\d+_\d+_(\d+)(?=_S2)
    解释:跳过前三组数字和三个下划线,(\d+)捕获第四组数字,(?=_S2)专门匹配模板里的_S2后缀,避免误匹配后续内容。

验证示例

用你提供的测试字符串验证:

测试字符串:38_285_4461_186_S2A_MSIL2A_20180119T101331_N0206_R022_T32TQQ_20180119T135441
四个正则分别匹配后,会依次得到:38、285、4461、186

小提示(新手友好)

如果用Python、JavaScript这类支持捕获组的工具,直接取正则的第一个捕获组内容即可。比如Python代码示例:

import re
test_str = "38_285_4461_186_S2A_MSIL2A_20180119T101331_N0206_R022_T32TQQ_20180119T135441"

# 提取第一组
first_group = re.search(r'^(\d+)(?=_)', test_str).group(1)
# 提取第二组
second_group = re.search(r'^\d+_(\d+)(?=_)', test_str).group(1)
# 提取第三组
third_group = re.search(r'^\d+_\d+_(\d+)(?=_)', test_str).group(1)
# 提取第四组
fourth_group = re.search(r'^\d+_\d+_\d+_(\d+)(?=_S2)', test_str).group(1)

print(first_group, second_group, third_group, fourth_group)
# 输出:38 285 4461 186

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:27:11