在字符串中查找模式并提取以下值

时间:2018-03-08 22:01:20

标签: r string

在Rstudio中,我需要通过字符串

中的代码找到下一个值

示例1,C

function("C", "01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json")

解决方案:2

示例2,MMAX

function("MMAX", "01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json")

解决方案:8

示例3,包含MMAX

function("MMAX", "01_BP01_C_2_MMAX_12__TIME_SECONDS_1.json")

解决方案:12

2 个答案:

答案 0 :(得分:2)

以下是基于strpslit的自定义功能:

getResult <- function(pattern, target, splitPattern = "_") {
    foo <- unlist(strsplit(target, splitPattern))
    foo[which(foo == pattern) + 1]
}
# Returns 2 
getResult("C", "01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json")
# Returns 8
getResult("MMAX", "01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json")

答案 1 :(得分:1)

使用str <- c("01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json", "01_BP01_C_2_MMAX_8__TIME_SECONDS_1.json", "01_BP01_C_2_MMAX_12__TIME_SECONDS_1.json") pat <- c("C", "MMAX", "MMAX") splt <- function(pattern, string) { as.numeric(gsub(paste0("^.*?", pattern, ".*?(\\d+).*"), "\\1", string)) } sapply(1:length(str), function(x) splt(pat[x], str[x])) [1] 2 8 12 和正则表达式,您可以这样做:

lpArray