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

正则匹配需求:提取最后一个0后的有效数字(全0返回0)

正则表达式提取目标数字的解决方案

需求明确

根据你提供的示例数据和预期结果,实际需求可明确为:

  • 提取字符串中最后一个“后面跟随非0数字”的0之后的所有数字(包含后续的0)
  • 如果所有0之后均为0(即没有0后面跟着非0数字),则返回0

正确正则表达式及用法

正则模式

使用贪婪匹配的正则表达式捕获目标内容:

.*0([1-9]\d*)

逻辑说明

  • .*0:贪婪匹配到字符串中最后一个“后面跟着非0数字”的0(因为[1-9]要求后面必须有非0数字,所以会自动跳过末尾全是0的那些0)
  • ([1-9]\d*):捕获该0之后的所有数字,第一个字符是非0数字,后续可以是任意数字(包括0)

处理步骤

  1. 对每个字符串,使用上述正则进行匹配
  2. 若匹配成功,直接返回捕获组的内容(即\1)
  3. 若匹配失败(说明所有0之后都是0),返回0

代码示例(Python)

import re

def extract_target(s):
    match = re.fullmatch(r'.*0([1-9]\d*)', s)
    if match:
        return match.group(1)
    return '0'

# 测试你的数据
data = [
    "0100179835", "3000766774", "1500396843", "1500028408",
    "1508408637", "3105230262", "3005228061", "3105228407",
    "3105228940", "0900000000", "2100000000", "0800000000",
    "1000000001", "2200000001", "0800000001", "1300000001",
    "1000000002", "2200000002", "0800000002", "1300000002",
    "1000000003", "2200000003", "0800000003", "1300000003",
    "1000000004", "2200000004", "0800000004", "1300000004",
    "1000000005", "2200000005", "0800000005", "1300000005",
    "1000000006", "2300000006", "0800000006", "0900000006",
    "1000000007", "2300000007", "0900000007", "0800000007",
    "1000000008", "2300000008", "0900000008", "0800000008",
    "1100000009", "2300000009", "0900000009", "0800000009",
    "1000005217", "2000000429", "1100000020", "1000005000",
    "3000000070", "2000000400", "1000020000", "3000200000",
    "2906000000"
]

for s in data:
    print(extract_target(s))

结果验证

运行上述代码会输出你提供的预期结果,例如:

  • 0900000000 → 0
  • 1100000020 → 20
  • 1000005000 → 5000
  • 2906000000 → 6000000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:45:22