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