在 R 正则表达式模式中转义字符

由于 R 和正则表达式共享转义字符 \,为 grepsubgsub 或任何其他接受模式参数的函数构建正确的模式通常需要配对反斜杠。如果你构建一个三项角色向量,其中一个项目有一个换行符,另一个是一个制表符和一个都没有,并且希望是将换行符或制表符变成 4 个空格,然后构造需要一个反斜杠,但是配对的反斜杠:

x <- c( "a\nb", "c\td", "e    f")
x  # how it's stored
   #  [1] "a\nb"   "c\td"   "e    f"
cat(x)   # how it will be seen with cat
#a
#b c    d e    f

gsub(patt="\\n|\\t", repl="    ", x)
#[1] "a    b" "c    d" "e    f"

请注意,模式参数(如果它首先出现是可选的,只需要部分拼写)是唯一要求加倍或配对的参数。替换参数不需要加倍需要转义的字符。如果你希望所有换行和 4 空格出现都替换为制表符,那么它将是:

gsub("\\n|    ", "\t", x)
#[1] "a\tb" "c\td" "e\tf"