我有这些代码:
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"那样分开。 谢谢!
答案 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