我正在将一个短语作为参数读入R脚本。如果短语包含星号(*
),我不希望脚本运行。
但是,在使用grepl时,我遇到了识别星号的问题。例如:
> asterisk="*"
> phrase1="hello"
> phrase2="h*llo"
> grepl(asterisk,phrase1)
[1] TRUE
> grepl(asterisk,phrase2)
[1] TRUE
grepl(asterisk,phrase1)
的结果应为FALSE
。有谁知道如何让grepl
识别短语中是否有星号?
答案 0 :(得分:4)
试试这个:
p <- c("Hello", "H*llo")
grepl("\\*", p)
[1] FALSE TRUE
这是有效的,因为*
星号在常规表达中具有特殊含义。具体来说,*
表示找到前一个元素中的零个或多个。
因此,您必须使用\\*
来转义星号。双重转义是必要的,因为\
在R中已经具有转义的含义。