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

使用Power Query按最小长度要求从混合文本中提取数字编码的求解

Power Query 提取纯数值编码优化方案

现有代码问题说明

原逻辑采用「替换特殊字符→拆分字符串→提取所有数字→过滤长度」的路径,会将被特殊字符分隔的多段数字拼接为一个字符串,导致0102646v2.0被错误识别为010264620。

优化后完整代码

无需提前替换任何特殊字符,直接通过正则精准匹配目标编码,同时预留版本号提取扩展位:

let
    Source = Excel.CurrentWorkbook(){[Name="Table5"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Input ", type text}}),
    // 匹配所有长度≥6位的连续纯数字串作为目标编码
    #"提取目标编码" = Table.AddColumn(#"Changed Type", "目标编码", each 
        Text.Combine(
            Text.Regex.Matches([#"Input "], "\d{6,}"),
            ", "
        )
    ),
    // 后续需要提取版本号时,取消注释下方代码即可
    // #"提取版本号" = Table.AddColumn(#"提取目标编码", "版本号", each 
    //     Text.Combine(
    //         List.Transform(
    //             Text.Regex.Matches([#"Input "], "[vV]\d+\.\d+"),
    //             each Text.Replace(Text.Lower(_), "v", "")
    //         ),
    //         ", "
    //     )
    // )
in
    #"提取目标编码"
    // 启用版本号提取时,注释上一行,取消注释下一行
    // #"提取版本号"

逻辑说明

  • 核心匹配规则\d{6,}代表连续出现6次及以上的数字字符,完全符合「纯数值、长度不低于6位」的编码要求,非连续的数字会被自动拆分,不会出现拼接错误
  • 版本号提取规则匹配v/V开头的数字.数字格式字符串,自动去除前缀v后输出,同一条数据存在多个编码/版本号时,默认用逗号分隔

测试结果验证

针对你提供的测试用例,输出效果如下:

输入目标编码版本号(启用后输出)
3159087 v1.031590871.0
#8102368 V3.0 (Shine and ProtectR18)81023683.0
0102646v2.0 (Fresh Cotton)01026462.0
TDS# 3129801 V1.0 GPA Code#31234023129801, 31234021.0
FF3112964 0.1 FF3145524 0.1_3152912 0.13112964, 3145524, 3152912无

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:24:03