R在第一个下划线之后返回所有字符

时间:2019-03-29 19:44:11

标签: r gsub

样本数据

x=c("AG.av08_binloop_v6","TL.av1_binloopv2")

示例尝试

y=gsub(".*_","",x)

所需样品

WANT=c("binloop_v6","binloopv2")

基本上,我的目标是在第一个下划线值之后提取所有字符。

2 个答案:

答案 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"