样本数据
x=c("AG.av08_binloop_v6","TL.av1_binloopv2")
示例尝试
y=gsub(".*_","",x)
所需样品
WANT=c("binloop_v6","binloopv2")
基本上,我的目标是在第一个下划线值之后提取所有字符。
答案 0 :(得分:2)
在pattern
中,我们可以将零个或多个任何字符(.*
-此处.
是可以匹配任何字符的元字符)更改为零个或多个非字符从字符串的开头(_
)起[^_]*
(^
)。
sub("^[^_]*_", "", x)
#[1] "binloop_v6" "binloopv2"
如果我们不这样指定,则_
会匹配到字符串中的最后一个_
,直到该子字符串丢失为止,并返回'v6'和'binloopv2'
一个更简单的选择是word
中的stringr
library(stringr)
word(x, 2, sep = "_")
#[1] "binloop" "binloopv2"
答案 1 :(得分:2)
regexpr
给出第一个匹配的位置(在这种情况下为_
)。然后substring
可用于从相关位置到结尾(x
)提取nchar(x)
的一部分
substring(x, regexpr("_", x) + 1, nchar(x))
#[1] "binloop_v6" "binloopv2"