如何使用tidyverse的str_replace移除字符串下划线前的字符与数字
完全可以用tidyverse生态中stringr包的str_replace()函数实现该需求,核心是通过正则贪婪匹配到最后一个下划线及之前的所有内容,替换为空即可,具体实现代码如下:
# 加载stringr包 library(stringr) # 构造示例字符向量 char <- c("SRR04_d3_GCTCGGTAAGCACCTCGCCACATA","SRR04_d1_ACTCGGTAAGCACCTCGCCACATA", "JH-HL_GCTCGGTAAGCATGTCGCCACATA","HZ04_d5_GCTCGGTAAGCACCTCGCCACATA") # 执行替换:^.*_ 匹配从字符串开头到最后一个下划线的所有内容,替换为空 result <- str_replace(char, "^.*_", "") # 输出结果 result
运行后输出结果和需求示例完全一致:
[1] "GCTCGGTAAGCACCTCGCCACATA" "ACTCGGTAAGCACCTCGCCACATA" "GCTCGGTAAGCATGTCGCCACATA" [4] "GCTCGGTAAGCACCTCGCCACATA"
如果需要严格限定仅删除下划线之前的字母、数字、短横线,避免其他特殊场景匹配误差,也可以将正则调整为^[a-zA-Z0-9\\-]+_,上述示例场景下两种写法效果一致。
内容的提问来源于stack exchange,提问作者Z. Zhang
相关产品推荐
相关产品推荐

