grep中出现"'\w' is an unrecognized escape"错误

15

我在R的一些项目中使用grep(它使用perl=TRUE标志),但我无论如何都无法弄清楚为什么R会抛出错误。我的查询如下:

d$SomeColumn[grep("(?ix)<VNW[^;]*;(dis|dat)> \w*<N\(", d$Right, perl=TRUE)] <- 1

然而,R 抛出了以下错误:

Error: '\w' is an unrecognized escape in character string starting ""<VNW[^;]*;(dis|dat)> \w"

1
@anubhava 不需要,但为什么需要呢?它还没有被转义吗? - Bram Vanroy
6
这是因为正则表达式被输入为双引号中的字符串。字符串需要一次转义,而正则表达式引擎则需要另一次转义。例如,\\w 将作为 \w 传递给正则表达式引擎。 - anubhava
1个回答

25

在 r 中,您需要再次转义反斜杠。

d$SomeColumn[grep("(?ix)<VNW[^;]*;(dis|dat)> \\w*<N\\(", d$Right, perl=TRUE)] <- 1

                                              |     |

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