有意思的问题。
你上面的错的地方在于 “\\\”这个字符串在R里不合法的,写一下就知道了,第三个斜杠转义了引号…
正确的理解方式原文也写了:
首先R选择用字符串来表示正则表达式,但是正则表达式并不是字符串。
特殊字符\
特殊在于它既用来表示R里字符串的转义,也表示正则表达式里的转义。
所以要匹配一个\
,正则表达式是\\
, R里这个表达式写作\\\\
要匹配两个\\
,正则表达式是\\\\
,R的字符串就得用八道杠了…
八道杠代码如下:
## a string "a\\b"
writeLines("a\\\\b")
#> a\\b
## to match `\\`, regex is `\\\\`
writeLines("\\\\\\\\")
#> \\\\
## test
grepl("\\\\\\\\", "a\\\\b")
#> [1] TRUE
<sup>Created on 2019-03-08 by the reprex package (v0.2.1)</sup>