如何使用stringr regex在字符串中提取多个子字符串

时间:2017-10-25 00:30:43

标签: r regex stringr

我有这个字符串:

mystring <- "HMSC-bm_in_ALL_CELLTYPES.distal"

我想要做的是提取定义的子字符串 在这个包围中

[HMSC-bm]_in_ALL_CELLTYPES.[distal]

因此最终它将产生一个具有两个值的向量:HMSC-bmdistal。我该怎么做?我尝试了但失败了:

> stringr::str_extract(base,"\\([\\w-]+\\)_in_ALL_CELLTYPES\\.\\([\\w+]\\)")
[1] NA

2 个答案:

答案 0 :(得分:3)

我使用str_match

library(stringr)
mymatch <- str_match(mystring, "^(.*?)_.*?\\.(.*?)$")
mymatch

     [,1]                              [,2]      [,3]    
[1,] "HMSC-bm_in_ALL_CELLTYPES.distal" "HMSC-bm" "distal"

mymatch[, 2]
[1] "HMSC-bm"

mymatch[3, ]
[1] "distal"

答案 1 :(得分:2)

我们可以将字符串拆分为_in_ALL_CELLTYPES.

strsplit(mystring, split = "_in_ALL_CELLTYPES.")[[1]]
[1] "HMSC-bm" "distal"