我想在以下向量中找到包含星号的元素。
s <- c("A","B","C*","D","E*")
grep("*",s)
[1] 1 2 3 4 5
这是行不通的。我可以理解,因为它是一个特殊字符。
当我在这里阅读时,我决定在星号之前使用“\”。但这给了我一个错误:
grep("\*",s)
Error: '\*' is an unrecognized escape in character string starting ""\*"
我究竟做错了什么?
您需要对特殊字符进行两次转义,一次用于 R,一次用于正则表达式:
grep('\\*', s)
另一种选择是使用fixed=TRUE
grep('*', s,fixed=TRUE)
您可能想查看此链接,请参阅https://r.789695.n4.nabble.com/Why-do-my-regular-expressions-require-a-double-escape-to-get-a-literal-td4437962 .html。正如贝伦德哈塞尔曼所说:
你需要,
\\
因为旅游报价之间的表达式被解释了两次。