两个字符串上的grep

Eri*_*ail 1 grep r

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

字符串看起来像这样,

str <- c('a_abc', 'b_abc', 'abc', 'z_zxy', 'x_zxy', 'zxy')
Run Code Online (Sandbox Code Playgroud)

我已尝试过不同的选项?grep,但我无法做到正确,做这样的事情,

grep('[_abc]:[_zxy]',str, value = TRUE)
Run Code Online (Sandbox Code Playgroud)

我想要的是,

[1] "a_abc" "b_abc" "z_zxy" "x_zxy"
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

ale*_*ull 6

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

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


the*_*ail 6

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

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

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

grep('_.{3}$',str, value = TRUE)
Run Code Online (Sandbox Code Playgroud)

哪个匹配一个下划线_ 后跟任何字符.三次,{3}然后紧跟字符串的结尾$