使用grep查找不带单独的字母

时间:2016-07-13 18:10:53

标签: r grepl

我有这些代码:

x=c('a','a,b','a-c','ab')
y=c('a')
grep(y,x,ignore.case = T)

结果是

> grep(y,x)
[1] 1 2 3 4

但我希望结果应该是" 1 2 3",一次" a"被任何东西分开或只是" a",除了" a"并没有像" ab"那样分开。 谢谢!

2 个答案:

答案 0 :(得分:3)

y添加字边界:

x=c('a','a,b','a-c','ab')
y=c('a\\b')
grep(y,x,ignore.case = T)
# [1] 1 2 3

答案 1 :(得分:1)

由于OP想要的模式不涉及'a'([^a-z])或(|)之后的任何字母,因此它可以是字符串$的结尾。

grep("a([^a-z]|$)", x) 
#[1] 1 2 3

或者,如果我们想具体说明标点符号([[:punct:]])跟在'a'或(|)之后它是字符串的结尾,那么

grep("a([[:punct:]]|$)", x)
#[1] 1 2 3