【问题标题】:Extract characters between specified characters in R提取R中指定字符之间的字符
【发布时间】:2014-07-21 08:25:13
【问题描述】:
我有这个变量
x=“379_exp_mirror1.csv”
我需要在开头提取数字(“379”)(并不总是有 3 个字符),即第一个“”之前的所有内容。然后我需要提取第二个“”和“.”之间的所有内容,在本例中为“mirror1”。
我尝试了几种 sub 和 gsub 的组合都没有成功,请谁能给我一些指示?
谢谢
【问题讨论】:
标签:
r
string
extract
gsub
【解决方案2】:
您可以使用sub 提取子字符串:
x <- "379_exp_mirror1.csv"
sub("_.*", "", x)
# [1] "379"
sub("^(?:.*_){2}(.*?)\\..*", "\\1", x)
# [1] "mirror1"
gregexpr 的另一种方法:
regmatches(x, gregexpr("^.*?(?=_)|(?<=_)[^_]*?(?=\\.)", x, perl = TRUE))[[1]]
# [1] "379" "mirror1"
【解决方案3】:
也许你可以试试:
library(stringr)
x <- "379_exp_mirror1.csv"
str_extract_all(x, perl('^[0-9]+(?=_)|[[:alnum:]]+(?=\\.)'))[[1]]
#[1] "379" "mirror1"
或者
strsplit(x, "[._]")[[1]][c(T,F)]
#[1] "379" "mirror1"
或者
scan(text=gsub("[.]","_", x),what="",sep="_")[c(T,F)]
#Read 4 items
#[1] "379" "mirror1"