使用R中的grepl搜索星号

时间:2016-04-06 16:14:26

标签: r

我正在将一个短语作为参数读入R脚本。如果短语包含星号(*),我不希望脚本运行。

但是,在使用grepl时,我遇到了识别星号的问题。例如:

> asterisk="*"
> phrase1="hello"
> phrase2="h*llo"
> grepl(asterisk,phrase1)
[1] TRUE
> grepl(asterisk,phrase2)
[1] TRUE

grepl(asterisk,phrase1)的结果应为FALSE。有谁知道如何让grepl识别短语中是否有星号?

1 个答案:

答案 0 :(得分:4)

试试这个:

p <- c("Hello", "H*llo")
grepl("\\*", p)

[1] FALSE  TRUE

这是有效的,因为*星号在常规表达中具有特殊含义。具体来说,*表示找到前一个元素中的零个或多个。

因此,您必须使用\\*来转义星号。双重转义是必要的,因为\在R中已经具有转义的含义。