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

如何从逗号分隔字符串中提取冒号后短横线前的目标内容

字符串提取需求实现方案

通用逻辑

  • 分步处理逻辑:
    1. 按逗号分割原字符串,取第一个元素得到第一步的子串
    2. 对第一步得到的子串,先按冒号分割取后半部分,再按短横线分割取前半部分,即可得到目标结果
  • 正则一步处理逻辑:匹配规则为^[^:]+:([^-]+)-.*,直接捕获第一个分组即可得到结果

各编程语言实现示例

Python 实现

分步实现

A = "ABC:20.10.0-5,DEF:21.10.0-9,XYZ:20.10.0-9"
# 第一步:取第一个逗号前的子串
B = A.split(',')[0]
# 第二步:提取冒号后、短横线前的内容
C = B.split(':')[1].split('-')[0]
print(C) # 输出 20.10.0

正则一步实现

import re
A = "ABC:20.10.0-5,DEF:21.10.0-9,XYZ:20.10.0-9"
C = re.match(r'^[^:]+:([^-]+)-', A).group(1)
print(C) # 输出 20.10.0

JavaScript 实现

分步实现

const A = "ABC:20.10.0-5,DEF:21.10.0-9,XYZ:20.10.0-9";
const B = A.split(',')[0];
const C = B.split(':')[1].split('-')[0];
console.log(C); // 输出 20.10.0

正则实现

const A = "ABC:20.10.0-5,DEF:21.10.0-9,XYZ:20.10.0-9";
const C = A.match(/^[^:]+:([^-]+)-/)[1];
console.log(C); // 输出 20.10.0

Java 实现

public class StringExtract {
    public static void main(String[] args) {
        String A = "ABC:20.10.0-5,DEF:21.10.0-9,XYZ:20.10.0-9";
        // 分步实现
        String B = A.split(",")[0];
        String C = B.split(":")[1].split("-")[0];
        System.out.println(C); // 输出20.10.0
        
        // 正则实现
        C = A.replaceAll("^[^:]+:([^-]+)-.*", "$1");
        System.out.println(C); // 输出20.10.0
    }
}

Shell awk实现

echo "ABC:20.10.0-5,DEF:21.10.0-9,XYZ:20.10.0-9" | awk -F '[,:-]' '{print $2}'
# 输出 20.10.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:48:01