我想在下面的向量中找到包含星号的元素。
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 ""\*"
我做错了什么?
答案 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所述:
您需要
\\
,因为游览引号之间的表达式会被解释两次。