9

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

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 ""\*"

我究竟做错了什么?

4

3 回答 3

13

您需要对特殊字符进行两次转义,一次用于 R,一次用于正则表达式:

grep('\\*', s)
于 2013-07-02T20:44:33.137 回答
8

另一种选择是使用fixed=TRUE

grep('*', s,fixed=TRUE)
于 2013-07-02T21:25:46.907 回答
0

您可能想查看此链接,请参阅https://r.789695.n4.nabble.com/Why-do-my-regular-expressions-require-a-double-escape-to-get-a-literal-td4437962 .html。正如贝伦德哈塞尔曼所说:

你需要,\\因为旅游报价之间的表达式被解释了两次。

于 2020-07-13T06:48:45.493 回答