想象一下,我们想要找到下面字符串中的所有FOO和后续数字,并将它们作为向量返回(对于不可读性道歉,我想说明在FOO之前和之后没有规则模式):
xx <- "xasdrFOO1921ddjadFOO1234dakaFOO12345ndlslsFOO1643xasdf"
我们可以使用它来查找其中一个(取自1)
gsub(".*(FOO[0-9]+).*", "\\1", xx)
[1] "FOO1643"
但是,我想将所有这些作为向量返回。
我已经想过使用strplit()和gregexpr()这样做的复杂方法 - 但我觉得有一种更好(更简单)的方式。
答案 0 :(得分:5)
您可能对regmatches
:
> regmatches(xx, gregexpr("FOO[0-9]+", xx))[[1]]
[1] "FOO1921" "FOO1234" "FOO12345" "FOO1643"
答案 1 :(得分:3)
xx <- "xasdrFOO1921ddjadFOO1234dakaFOO12345ndlslsFOO1643xasdf"
library(stringr)
str_extract_all(xx, "(FOO[0-9]+)")[[1]]
#[1] "FOO1921" "FOO1234" "FOO12345" "FOO1643"
这也可以采用字符串向量,匹配将在列表元素中。
答案 2 :(得分:2)
版本略短。
library(gsubfn)
strapplyc(xx,"FOO[0-9]*")[[1]]