"hallo\ nworld"=="hallo nworld"
[1] TRUE
在R中,\+blank
= blank
?这种语法的意义是什么?
答案 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
被解释为\t
,TAB
被解释为\r
,{{1} } CR
。在您的情况下,您在\
的空格之前,它仍被解释为空格。
虽然\+
未被定义为转义序列,但我在下面测试过:
> str <- "hello,\+world"
Error: '\+' is an unrecognized escape in character string starting ""hello,\+"
因此,如果您想在文字字符串中使用+
,请直接使用+
,如果您想在正则表达式中使用它,则可以直接使用+
作为重复量词,或者使用转义序列\\+
我发现两个链接Regular Expressions as used in R,Regular Expression with The R Language很有用,你可以在那里找到更多详细信息
答案 1 :(得分:1)
\是一个转义字符。它改变了下一个字符的含义,虽然在空格的情况下,它不会改变任何东西。如果你''t'你得到一个标签字符,如果你使用'\ n'你得到一个换行符。 \只会对某些字符起作用,而所有其他字符只会与它们匹配。如果要在输出中包含“\”,则需要使用\\
以下是正则表达式中反斜杠字符的其他一些用法:
http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexp-Backslash.html