如何从逗号分隔字符串中提取冒号后短横线前的目标内容
字符串提取需求实现方案
通用逻辑
- 分步处理逻辑:
- 按逗号分割原字符串,取第一个元素得到第一步的子串
- 对第一步得到的子串,先按冒号分割取后半部分,再按短横线分割取前半部分,即可得到目标结果
- 正则一步处理逻辑:匹配规则为
^[^:]+:([^-]+)-.*,直接捕获第一个分组即可得到结果
各编程语言实现示例
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
相关产品推荐
相关产品推荐

