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

如何使用正则表达式匹配字符串中出现的前三个数字?

前三个分散数字匹配方案

你需要实现的是提取字符串中所有出现的数字字符,忽略数字之间的非数字分隔符后取前三位拼接,以下是可直接落地的实现方案:

方案1:先提取全量数字再截取(通用度最高)

该方案兼容所有编程语言,灵活度最高:

  • 用\d全局匹配提取字符串中所有数字字符,得到数字序列
  • 取序列前三位拼接为字符串即可

匹配效果验证:

输入提取的全量数字输出结果
DC-9-83(MD-83)9、8、3、8、3983
B-145LR1、4、5145
DC-9-319、3、1931
PA-28-1802、8、1、8、0281
737-6007、3、7、6、0、0737

若后续需求调整为取前N位数字,仅需修改截取长度即可,无需调整匹配规则。

方案2:单条正则直接捕获前三个数字

如果需要用单条正则一步完成捕获,可以使用如下规则:
^\D*(\d)\D*(\d)\D*(\d)
规则说明:

  • ^ 定位到字符串开头
  • \D* 跳过0个或多个非数字字符
  • (\d) 捕获单个数字到分组,共捕获三次即可拿到前三个出现的数字
  • 最终将捕获到的第1、2、3分组内容拼接,即为目标结果

代码示例(Python)

import re
def get_first_three_digits(input_str: str) -> str:
    all_digits = re.findall(r'\d', input_str)
    return ''.join(all_digits[:3])

# 测试用例
test_cases = ["DC-9-83(MD-83)", "B-145LR", "DC-9-31", "PA-28-180", "737-600"]
for case in test_cases:
    print(f"{case} 匹配结果:{get_first_three_digits(case)}")

运行输出完全符合预期匹配效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 18:45:03