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

Tcl如何对文本中指定前缀的版本行排序并提取最后一项

Tcl实现版本号筛选排序方案

完整可运行代码

proc get_latest_aa_version {input_text} {
    # 拆分输入文本为行列表
    set lines [split $input_text "\n"]
    set matched_lines [list]
    
    foreach line $lines {
        # 匹配以#AA_VERSION =开头的行,正则中\s*兼容行首带空格/制表符的场景,不需要可删除
        if {[regexp {^\s*#AA_VERSION =} $line]} {
            lappend matched_lines $line
        }
    }

    # 无匹配项直接返回空值
    if {[llength $matched_lines] == 0} {
        return ""
    }

    # 字典排序:按版本号中的数字自然排序,避免ASCII排序导致d138排在d82前面的问题
    set sorted_lines [lsort -dictionary $matched_lines]
    # 取排序后最后一项返回
    return [lindex $sorted_lines end]
}

调用测试示例

# 你的示例输入文本
set test_text {#AA_VERSION = Aa/10.10-d87_1
#AA_VERSION = Aa/10.10-d887_1
#AA_VERSION = Aa/10.10-d138_1
#AA_VERSION = Aa/10.10-d82_1}

# 调用函数输出结果
puts [get_latest_aa_version $test_text]

运行输出结果:
#AA_VERSION = Aa/10.10-d887_1

注意事项

  • 如果需要严格匹配行首无任何空白的#AA_VERSION =开头行,可将正则改为{^#AA_VERSION =}
  • 字典排序规则会优先匹配版本前缀、再按数字大小排序,符合常规版本号排序逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:57:00