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

如何在R中使用str_extract从给定字符串提取目标子串?

使用str_extract提取指定子字符串

完全可以用str_extract提取目标子串,以下是两种可行的实现方式:

  • 方法1:利用前后固定字符串做边界匹配(精准匹配)
    目标子串位于pag-files-per-patient/之后、_KXgES5FtCpLhQce7mGkuMX之前,用正则的正向/反向预查锁定区间:

    library(stringr)
    
    string <- "P/project/dhi_intro_genomics/genomics/gene/pag-files-per-patient/000tg82e-99c4-4h20-9ude-d95e15005a 3c_KXgES5FtCpLhQce7mGkuMX/XML/JH_DN_S9_2000-12-27_MTW-29FEB1997UW"
    
    sub_string <- str_extract(string, "(?<=pag-files-per-patient/).*(?=_KXgES5FtCpLhQce7mGkuMX)")
    print(sub_string)
    # 输出:[1] "000tg82e-99c4-4h20-9ude-d95e15005a 3c"
    
  • 方法2:基于目标子串的字符特征匹配(适配性更强)
    目标子串仅包含小写字母、数字、连字符和空格,直接匹配这类字符组合:

    library(stringr)
    
    string <- "P/project/dhi_intro_genomics/genomics/gene/pag-files-per-patient/000tg82e-99c4-4h20-9ude-d95e15005a 3c_KXgES5FtCpLhQce7mGkuMX/XML/JH_DN_S9_2000-12-27_MTW-29FEB1997UW"
    
    sub_string <- str_extract(string, "(?<=pag-files-per-patient/)[a-z0-9\\-\\s]+")
    print(sub_string)
    # 输出:[1] "000tg82e-99c4-4h20-9ude-d95e15005a 3c"
    

两种方法都能得到你需要的子串,方法1适合前后固定字符串不变的场景,方法2适合后面的随机字符串内容/长度有变化,但目标子串字符规则固定的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:45:42