在r中使用正则表达式提取字符串



我试图在r中使用正则表达式从文件名中提取一堆信息。当我匹配模式时,str_view()向我展示了正确的字符串集。然而,当我试图减去这些并提取剩余部分时,它不起作用。我也尝试了str_extract(),但它不起作用。我做错了什么?

fname <- "TC2L6C_2020-08-14_1516_6C-ASG_29_00020.tab"
fext <- tools::file_path_sans_ext(fname)
stringr::str_view(fext, ".*-ASG_\d+_", match = TRUE)
P_num <- gsub(".*-ASG_\d{2}_", "", fext)
P_num <- stringr::str_extract(fname, "(?<=-ASG_\d+)([^_])*(?=\.tab)")

使用trimwsfrombase R

trimws(fname, whitespace = ".*_|\..*")
[1] "00020"

数据
fname <- "TC2L6C_2020-08-14_1516_6C-ASG_29_00020.tab"

这是一个使用sub的简单方法:

fname <- "TC2L6C_2020-08-14_1516_6C-ASG_29_00020.tab"
output <- sub("^.*-ASG_\d+_(.*)\.tab$", "\1", fname)
output
[1] "00020"

上面我们使用一个捕获组来隔离文件名中你想要匹配的部分,没有扩展名。