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

时间:2018-11-27 15:46:23

标签: r string

我有一个像这样的字符串向量

super(...).check()

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

class testT(object):
    def check(self, str):
        return "t" in str

class testTE(testT):
    def check(self, str):
        return super(testTE, self).check(str) and "e" in str

class testTES(testTE):
    def check(self, str):
        return super(testTES, self).check(str) and "s" in str

print(testTES().check("test"))
# True
print(testTES().check("dog"))
# False
print(testTES().check("dogs"))
# False
print(testTE().check("tuple"))
# True

我尝试过: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")

正确的做法是什么?

2 个答案:

答案 0 :(得分:3)

你可以做

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

在这里抓住后面有东西的“ SsHV2L”,然后仅用“ SsHV2L”代替所有

答案 1 :(得分:1)

gsub("(^.+SsHV2L)(.+$)","\\1", test)
[1] "Dcl2_SsHV2L" "Dcl2_SsHV2L" "Dcl2_SsHV2L" "Dcl1_SsHV2L"

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