带特殊字符的grep

11
我想在以下向量中找到包含星号字符的元素。
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 ""\*"

我做错了什么?

3个回答

16

您需要对特殊字符进行两次转义,一次是为了R,另一次是为了正则表达式:

grep('\\*', s)

11

另一个选择是使用fixed=TRUE

,这将使文本以固定宽度的形式显示。
grep('*', s,fixed=TRUE)

1
请注意,使用此选项会使 ignore.case=TRUE 失效(https://stackoverflow.com/questions/10202600/r-regexp-ignore-case-and-fixed-dont-work-together) - Brndn

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接