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

如何用正则表达式修改R向量字符串:将第4个下划线替换为_PE

优雅的正则替换实现方式

你可以使用R的sub()函数结合精准的正则表达式完成需求,核心思路是定位到第4个下划线的位置,通过分组匹配保留前后内容并插入指定字符串,代码简洁且可读性强:

# 定义原始向量
file_vec <- c("b040_p001_e001_DMSO_01.raw", "b040_p001_e001_DMSO_02.raw", 
              "b040_p001_e001_DMSO_03.raw", "b040_p001_e001_DMSO_04.raw", "b040_p001_e001_DMSO_05.raw", 
              "b040_p001_e001_DOX_01.raw", "b040_p001_e001_DOX_02.raw", "b040_p001_e001_DOX_03.raw", 
              "b040_p001_e001_DOX_04.raw", "b040_p001_e001_DOX_05.raw", "b040_p001_e001_IAA_01.raw", 
              "b040_p001_e001_IAA_02.raw", "b040_p001_e001_IAA_03.raw", "b040_p001_e001_IAA_04.raw", 
              "b040_p001_e001_IAA_05.raw", "b040_p001_e001_MK1775_01.raw", 
              "b040_p001_e001_MK1775_02.raw", "b040_p001_e001_MK1775_03.raw", 
              "b040_p001_e001_MK1775_04.raw", "b040_p001_e001_MK1775_05.raw", 
              "b040_p001_e001_pool_01.raw", "b040_p001_e001_pool_02.raw", "b040_p001_e001_pool_03.raw", 
              "b040_p001_e001_pool_04.raw")

# 执行替换
modified_vec <- sub("^(.*?_.*?_.*?_.*?)_(.*)$", "\\1_PE\\2", file_vec)

正则表达式说明

  • ^:匹配字符串起始位置
  • (.*?_.*?_.*?_.*?):第一个捕获分组,匹配前3个下划线及之前的所有内容,?启用非贪婪模式,确保只匹配到第4个下划线的前一个字符
  • _:精准匹配第4个下划线
  • (.*)$:第二个捕获分组,匹配第4个下划线之后的所有内容直到字符串结尾
  • \\1_PE\\2:替换规则,保留第一个分组内容,插入_PE后拼接第二个分组内容

执行后,modified_vec中的元素会完全符合需求,例如b040_p001_e001_DMSO_01.raw会被替换为b040_p001_e001_DMSO_PE01.raw。

内容的提问来源于stack exchange,提问作者Pavel Shliaha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:24:56