如何使用R提取字符串最后一个反斜杠后的8位带点数字字符
首先注意R语言中反斜杠为转义字符,你示例中的原始向量需要将单个反斜杠替换为双反斜杠才能被正确识别,以下是两种可直接落地的实现方案,均基于stringr包,支持批量处理大量数据:
# 加载依赖包 library(stringr) # 修正转义后的原始向量 df <- c("04 IRB/IEC and other Approvals\\04.01 IRB/IEC Trial Approvals\\04.01.02 IRB/IEC Approval", "01 Trial Management\\01.01 Trial Oversight\\01.01.02 Trial Management Plan")
方案1:正则直接匹配(性能最优)
利用正向预查匹配最后一个反斜杠后的三级编号规则片段,一步得到结果:
df2 <- str_extract(df, "(?<=\\\\)\\d{2}\\.\\d{2}\\.\\d{2}")
方案2:拆分后提取(逻辑更易理解)
先按反斜杠拆分字符串,取第三段的前8位字符,适配你描述的固定2个反斜杠的结构:
# 拆分后取最后一段,再提取前8位 df2 <- str_split(df, "\\\\", simplify = TRUE)[, 3] |> str_sub(start = 1, end = 8)
两种方案输出的df2均为你需要的c("04.01.02", "01.01.02"),完全适配DIA TMF参考模型的zone/section/artifact三级编号提取需求。
内容的提问来源于stack exchange,提问作者Mr. Biggums
相关产品推荐
相关产品推荐

