R正则表达式中“\”的含义是什么?

时间:2013-12-08 06:19:17

标签: r

"hallo\ nworld"=="hallo nworld"
[1] TRUE

在R中,\+blank = blank?这种语法的意义是什么?

2 个答案:

答案 0 :(得分:2)

在R正则表达式中有一些元字符(如. \ | ( ) [ { ^ $ * + ?)具有特殊含义,例如.匹配单个字符,+表示前面的项目将匹配一个或多个项目。

> grep("a+", c("abc.", "def", "cba a", "a.a", "a+"), value=TRUE)
[1] "abc."  "cba a" "a.a"   "a+"

在此示例中,a+表示我们希望匹配其中包含一个或多个a的字符串

如果要匹配其中包含实际+字符的字符串(如上例中的最后一个字符串a+),则应在正则表达式中使用反斜杠\使解析器以不同的方式解释它(否则它将使用其特殊含义进行解释),因此上面的示例将更改为:

> grep("a\\+", c("abc.", "def", "cba a", "a.a", "a+"), value=TRUE)
[1] "a+"

请注意,我们在\\之前有+,因为\本身就是元字符,所以\需要一个+,而\需要一个\对于\a本身

在非元字符之前使用反斜杠时,其含义与实现有关,例如BEL被解释为\tTAB被解释为\r,{{1} } CR。在您的情况下,您在\的空格之前,它仍被解释为空格。

虽然\+未被定义为转义序列,但我在下面测试过:

> str <- "hello,\+world"
Error: '\+' is an unrecognized escape in character string starting ""hello,\+"

因此,如果您想在文字字符串中使用+,请直接使用+,如果您想在正则表达式中使用它,则可以直接使用+作为重复量词,或者使用转义序列\\+

我发现两个链接Regular Expressions as used in RRegular Expression with The R Language很有用,你可以在那里找到更多详细信息

答案 1 :(得分:1)

\是一个转义字符。它改变了下一个字符的含义,虽然在空格的情况下,它不会改变任何东西。如果你''t'你得到一个标签字符,如果你使用'\ n'你得到一个换行符。 \只会对某些字符起作用,而所有其他字符只会与它们匹配。如果要在输出中包含“\”,则需要使用\\

以下是正则表达式中反斜杠字符的其他一些用法:

http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexp-Backslash.html