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

R语言如何优雅实现删除字符串中指定的第n个分隔符

解决方案

直接通过正则匹配定位第5个下划线,配合str_replace一步完成替换,代码更简洁:

library(stringr)
name <- "Bacteria_Firmicutes_Clostridia_Clostridiales_Rumino_coccaceae_Ruminococcus_Ruminococcus_albus"
result <- str_replace(name, "^((?:[^_]+_){4}[^_]+)_", "\\1")
result

正则逻辑说明

  • (?:[^_]+_):匹配1个完整的分段+分隔符组合,[^_]+匹配连续的非下划线字符(也就是分段内容),后面跟下划线分隔符,(?:)标记为非捕获组避免占用捕获组序号
  • {4}:让前面的分段+分隔符组合重复4次,刚好匹配前4个分段和对应的4个下划线
  • 后续的[^_]+匹配第5个分段的内容(这里对应Rumino)
  • 最末尾的_就是要删除的第5个下划线
  • 替换时用\\1引用前面括号捕获的所有内容(前4个分段+4个下划线+第5个分段内容),直接丢弃掉末尾的第5个下划线就得到目标结果

如果需要通用修改要删除的下划线序号,只要把{4}改为{n-1}即可,比如要删除第3个下划线就改成{2},适配性很强。
运行后输出结果和预期完全一致:

[1] "Bacteria_Firmicutes_Clostridia_Clostridiales_Ruminococcaceae_Ruminococcus_Ruminococcus_albus"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:27:04