Strsplit()由第二次出现的分隔符

时间:2014-12-04 16:12:39

标签: regex r

我试图通过字符串中第二次出现的字符进行拆分(在第二次出现字符x之前返回字符串中的子字符串)

对于字符串:

s <-"a_b_c",如果分隔符是"_",我需要子字符串:"a_b"

我的函数在第一次出现时返回子字符串:

 return_topic<-function(s)
 {
   if (length(grep("_",s))>0)
     { return (unlist(strsplit(s,"_"))[1])}
    else return  (" ")

  }


> return_topic("a_b_c")
[1] "a"

2 个答案:

答案 0 :(得分:5)

您可以使用sub

sub("(.*?_.*?)_.*", "\\1", s)
# [1] "a_b"

答案 1 :(得分:0)

使用strsplit

的一种方法
s <- c('a_b_c', '_b', '_bc_', 'abc__')
sapply(strsplit(s, '^[^_]*?[_][^_]*?(*SKIP)(*F)|_', perl=TRUE),`[`,1)
#[1] "a_b"  "_b"   "_bc"  "abc_"