R语言如何删除字符串中冒号前的".数字"片段?
R语言匹配删除字符串中「. + 数字」片段的实现方案
核心实现代码
# 构造示例字符串向量 test_str <- c("ABCD.1:f_HJK", "ABFD.1:f_HTK", "CJD:f_HRK", "QQYP.2:f_HDP") # 方案1:正向预查实现,需开启Perl正则支持 result <- gsub(pattern = "\\.\\d+(?=:)", replacement = "", x = test_str, perl = TRUE) # 方案2:捕获组实现,无需Perl正则支持 result <- gsub(pattern = "\\.\\d+(:)", replacement = "\\1", x = test_str)
运行后输出结果为:
[1] "ABCD:f_HJK" "ABFD:f_HTK" "CJD:f_HRK" "QQYP:f_HDP"
规则说明
\\.:匹配字面量点号,正则中.默认匹配任意单字符,因此需要加反斜杠转义,R字符串中反斜杠需要双重书写\\d+:匹配1个及以上的连续数字- 方案1的
(?=:)为正向肯定预查规则,仅当匹配到的.+数字片段后紧跟冒号时才命中匹配,且冒号不会被纳入匹配范围,替换时不会被删除 - 方案2通过捕获组将匹配片段末尾的冒号单独留存,替换时仅保留冒号,实现删除
.+数字片段的效果
内容的提问来源于stack exchange,提问作者pingu87
相关产品推荐
相关产品推荐

