2013-12-08 16 views

回答

1

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

这里的反斜杠字符的一些其他用途的正则表达式:

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

1

在该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\rCR。在你的情况下,你在\前面有一个空格,它仍然被解释为空格。

虽然\+没有被定义为一个转义序列,因为我下面测试:

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

所以,如果你想在你使用+文字字符串使用+直接,如果你想在正则表达式中使用它,您使用+直接作为重复数量或使用转义序列\\+

我发现了两个链接Regular Expressions as used in RRegular Expression with The R Language有用的,你可以找到更多的细节有