1

我正在努力在一个字符串中抓取两个不同的元素。

字符串看起来像这样,

str <- c('a_abc', 'b_abc', 'abc', 'z_zxy', 'x_zxy', 'zxy')

我已经尝试过使用不同的选项?grep,但我做错了,正在做这样的事情,

grep('[_abc]:[_zxy]',str, value = TRUE)

而我想要的是,

[1] "a_abc" "b_abc" "z_zxy" "x_zxy"

任何帮助,将不胜感激。

4

3 回答 3

6

这应该工作:grep('_abc|_zxy', str, value=T)

X|YX匹配或匹配时Y匹配

于 2013-03-08T00:06:03.847 回答
6

使用普通括号(,而不是方括号[

grep('_(abc|zxy)',str, value = TRUE)
[1] "a_abc" "b_abc" "z_zxy" "x_zxy"

为了使grep更灵活一点,您可以执行以下操作:

grep('_.{3}$',str, value = TRUE)

这将匹配一个下划线_ 后跟任何字符.三遍,{3}紧接着是字符串的结尾$

于 2013-03-08T00:09:41.217 回答
1

在这种情况下,只需这样做:

str[grep("_",str)]

会工作......在你的具体情况下它更复杂吗?

于 2013-03-08T00:03:29.750 回答