我正在努力在一个字符串中抓取两个不同的元素。
字符串看起来像这样,
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"
任何帮助,将不胜感激。
这应该工作:grep('_abc|_zxy', str, value=T)
X|Y
X
匹配或匹配时Y
匹配
使用普通括号(
,而不是方括号[
grep('_(abc|zxy)',str, value = TRUE)
[1] "a_abc" "b_abc" "z_zxy" "x_zxy"
为了使grep
更灵活一点,您可以执行以下操作:
grep('_.{3}$',str, value = TRUE)
这将匹配一个下划线_
后跟任何字符.
三遍,{3}
紧接着是字符串的结尾$
在这种情况下,只需这样做:
str[grep("_",str)]
会工作......在你的具体情况下它更复杂吗?