grep特殊字符

时间:2013-07-02 20:43:22

标签: string r grep

我想在下面的向量中找到包含星号的元素。

s <- c("A","B","C*","D","E*")
grep("*",s)

[1] 1 2 3 4 5

这不起作用。我可以理解,因为它是一个特殊的角色 当我阅读here时,我决定在明星角色之前使用“\”。但这给了我一个错误:

grep("\*",s)
Error: '\*' is an unrecognized escape in character string starting ""\*"

我做错了什么?

3 个答案:

答案 0 :(得分:9)

你需要两次转义特殊字符,一次是R,一次是正则表达式:

grep('\\*', s)

答案 1 :(得分:6)

另一种选择是使用fixed=TRUE

grep('*', s,fixed=TRUE)

答案 2 :(得分:0)

您可能想查看此链接,请参阅https://r.789695.n4.nabble.com/Why-do-my-regular-expressions-require-a-double-escape-to-get-a-literal-td4437962.html。 正如Berend Hasselman所述:

您需要\\,因为游览引号之间的表达式会被解释两次。