代码之家  ›  专栏  ›  技术社区  ›  MAPK

在R中匹配字符串后如何删除所有内容?

  •  2
  • MAPK  · 技术社区  · 7 年前

    test <- c("Dcl2_SsHV2L_2_CAAAAG_L003_R1_001", "Dcl2_SsHV2L_2_CAAAAG_L003_R1_001", 
    "Dcl2_SsHV2L_2_CAAAAG_L003_R1_001", "Dcl1_SsHV2L_2_GGTAGC_L003_R1_001")
    

    我需要删除“SsHV2L”之后的所有内容并仅获取

    Dcl2_SsHV2L
    Dcl2_SsHV2L
    Dcl2_SsHV2L
    Dcl1_SsHV2L
    

    我试过: gsub("SsHV2L.*","",test)

    正确的做法是什么?

    2 回复  |  直到 7 年前
        1
  •  3
  •   MrFlick    7 年前

    你可以这么做

    gsub("SsHV2L.+$", "SsHV2L", test)
    

    在这里,你抓取“SsHV2L”,在它后面有一些东西,然后用“SsHV2L”替换所有的东西

        2
  •  1
  •   IRTFM    7 年前
    gsub("(^.+SsHV2L)(.+$)","\\1", test)
    [1] "Dcl2_SsHV2L" "Dcl2_SsHV2L" "Dcl2_SsHV2L" "Dcl1_SsHV2L"
    

    这使用了一个有两个捕获类的模式,第一个在目标字符串中结束,然后只保留该捕获类。